转载请标明出处:http://blackwing.iteye.com/blog/1978501
org.apache.hadoop.io.Text里面的getBytes方法有个小坑。
先看现场:
String s = "91223224-20131120-96413376-150";
Text t = new Text();
t.set(s);
Put put = new Put(t.getBytes());//*1
put.add("kq".getBytes(), "0".getBytes(),"1".getBytes());
List<Put> puts = new ArrayList<Put>();
puts.add(put);
Put put2 = new Put(t.toString().getBytes());//*2
put2.add("kq".getBytes(), "1".getBytes(),"2".getBytes());
puts.add(put2);
try {
table.batch(puts);
table.flushCommits();
table.close();
} catch (Exception e) {
e.printStackTrace();
}
其中标注的地方就是差别所在。如果按照*1方式put到hbase,跟按照*2方式put到hbase得到的数据如下:
91223224-20131120-96413376-150\x00\x00\x00
91223224-20131120-96413376-150
原因是getBytes获得的字节数组长度跟Text.getLength获得的长度不一致,不足的地方Text会自动补全。
String s = "91223224-20131120-96413376-150";
Text t = new Text();
t.set(s);
System.out.println(t.getLength()+" | "+t.getBytes().length);
输出结果是:30 | 33
所以如果要把Text的内容put到hbase,最保险的方式是先转换为String在获得字节数组Text.toString().getBytes()
分享到:
相关推荐
Hadoop数据迁移是指将存储在Hadoop分布式文件系统(HDFS)中的数据转移到其他存储系统中,例如HBase。HBase是一个基于Hadoop的分布式数据库,它主要用于随机实时读/写访问超大表,适用于存储半结构化或非结构化稀疏...
首先,通过`split`方法将输入的文本数据按逗号分割成数组,然后使用`Bytes.toBytes`方法将字符串转换为字节数组,构建`ImmutableBytesWritable`对象,最后使用`KeyValue`对象封装数据,准备输出给Reduce阶段处理。...
HBase 和 Hadoop 数据块损坏是非常常见的问题,可能会导致数据丢失、集群崩溃等严重后果。因此,了解如何处理 HBase 和 Hadoop 数据块损坏是非常重要的。本文将介绍 HBase 和 Hadoop 数据块损坏的处理方法。 一、...
Hadoop和HBase是大数据处理领域中的重要组件,它们在分布式存储和实时数据访问方面扮演着关键角色。Hadoop是一个开源框架,主要用于处理和存储大量数据,而HBase是建立在Hadoop之上的非关系型数据库,提供高可靠性、...
在大数据处理领域,Hadoop、HBase和Zookeeper是三个至关重要的组件,它们共同构建了一个高效、可扩展的数据处理和存储环境。以下是关于这些技术及其集群配置的详细知识。 首先,Hadoop是一个开源的分布式计算框架,...
集成Hadoop和HBase时,通常会将HBase的JAR包添加到Hadoop的类路径中,确保Hadoop集群能够识别并处理HBase的相关操作。这个过程可能涉及到配置Hadoop的环境变量,如HADOOP_CLASSPATH,以及修改HBase的配置文件,如...
在搭建Hadoop HA高可用集群时,需要考虑到Hadoop、Zookeeper和HBase三个组件之间的版本兼容性问题。不同的版本组合可能会出现不兼容问题,因此需要选择合适的版本组合。 四、安装和配置Zookeeper Zookeeper是...
确保HBase和Hadoop版本兼容是成功部署的关键,因为不兼容的版本可能会导致各种问题,如数据丢失、性能下降或服务不可用。在实际生产环境中,应该根据项目需求选择合适的HBase和Hadoop版本,以保证系统的稳定性和高效...
Hadoop和HBase都是开源的分布式大数据处理框架,Hadoop主要用于大数据的存储和处理,而HBase是一个构建在Hadoop之上的分布式、可扩展、非关系型的NoSQL数据库。Hadoop和HBase的集成允许HBase使用Hadoop的文件系统...
从给定的文件信息中,我们可以提炼出关于Hadoop集群中HBase应用开发的重要知识点,以下是对这些知识点的详细解析: ### HBase Shell 操作详解 HBase是Hadoop生态系统中一个重要的分布式数据库,用于存储大规模结构...
Hadoop2.6+HA+Zookeeper3.4.6+Hbase1.0.0 集群安装详细步骤
搭建一个完整的Hadoop单机版、HBase单机版以及Pinpoint与SpringBoot的整合环境,需要对大数据处理框架和微服务监控有深入的理解。在这个过程中,我们将涉及到以下几个关键知识点: 1. **Hadoop单机版**:Hadoop是...
《大数据云计算技术系列:Hadoop之Hbase从入门到精通》 HBase,全称Hadoop Database,是一款基于Hadoop生态系统的分布式列式存储系统,旨在处理海量结构化数据。它借鉴了Google Bigtable的设计思想,但开源并适应了...
Hadoop是一种能够存储和处理大量数据的分布式计算框架,而HBase则是在Hadoop之上构建的一个分布式列式存储系统。本文将详细介绍如何在三台虚拟机上安装配置Hadoop-0.20.205.0和HBase-0.90.5,包括单机模式和集群模式...
标题 "Hadoop+HBase+Java API" 涉及到三个主要的开源技术:Hadoop、HBase以及Java API,这些都是大数据处理和存储领域的关键组件。以下是对这些技术及其结合使用的详细介绍: **Hadoop** 是一个分布式计算框架,由...
### Hadoop之Hbase从入门到精通 #### HBase技术介绍与概述 HBase是一种分布式、高可靠性且高性能的列式存储系统,它基于Hadoop生态体系构建,并且能够支持大规模的数据存储需求。HBase的设计灵感来源于Google的...
在大数据处理领域,HBase和Hadoop是两个关键的组件,它们在分布式存储和处理大量数据方面发挥着重要作用。JMX(Java Management Extensions)是一种Java平台标准,用于管理和监控应用程序。在本实战中,我们将深入...
"Hadoop之Hbase从入门到精通" HBase 是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用 HBase 技术可在廉价 PC Server 上搭建起大规模结构化存储集群。HBase 是 Google Bigtable 的开源实现,类似 ...
4. **Put和Get操作**:Put用于向表中插入数据,Get则用于获取数据,两者都是HBase的基本操作。 5. **Scan操作**:Scan允许一次获取表中多行或多列的数据,常用于数据查询。 6. **索引和过滤器**:HBase支持索引和...