`
BlackWing
  • 浏览: 200081 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Hadoop的Text类getBytes字节数据put到HBase后有多余字符串问题

阅读更多
转载请标明出处: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向HBase载入数据

    Hadoop数据迁移是指将存储在Hadoop分布式文件系统(HDFS)中的数据转移到其他存储系统中,例如HBase。HBase是一个基于Hadoop的分布式数据库,它主要用于随机实时读/写访问超大表,适用于存储半结构化或非结构化稀疏...

    Hadoop数据迁移--从Hadoop向HBase

    首先,通过`split`方法将输入的文本数据按逗号分割成数组,然后使用`Bytes.toBytes`方法将字符串转换为字节数组,构建`ImmutableBytesWritable`对象,最后使用`KeyValue`对象封装数据,准备输出给Reduce阶段处理。...

    hbase和hadoop数据块损坏处理

    HBase 和 Hadoop 数据块损坏是非常常见的问题,可能会导致数据丢失、集群崩溃等严重后果。因此,了解如何处理 HBase 和 Hadoop 数据块损坏是非常重要的。本文将介绍 HBase 和 Hadoop 数据块损坏的处理方法。 一、...

    hadoop hbase 全jar包

    Hadoop和HBase是大数据处理领域中的重要组件,它们在分布式存储和实时数据访问方面扮演着关键角色。Hadoop是一个开源框架,主要用于处理和存储大量数据,而HBase是建立在Hadoop之上的非关系型数据库,提供高可靠性、...

    hadoop+hbase+zookeeper集群配置流程及文件

    在大数据处理领域,Hadoop、HBase和Zookeeper是三个至关重要的组件,它们共同构建了一个高效、可扩展的数据处理和存储环境。以下是关于这些技术及其集群配置的详细知识。 首先,Hadoop是一个开源的分布式计算框架,...

    hadoop-2.7.2-hbase-jar.tar.gz

    集成Hadoop和HBase时,通常会将HBase的JAR包添加到Hadoop的类路径中,确保Hadoop集群能够识别并处理HBase的相关操作。这个过程可能涉及到配置Hadoop的环境变量,如HADOOP_CLASSPATH,以及修改HBase的配置文件,如...

    Hadoop HA高可用集群搭建(Hadoop+Zookeeper+HBase)

    在搭建Hadoop HA高可用集群时,需要考虑到Hadoop、Zookeeper和HBase三个组件之间的版本兼容性问题。不同的版本组合可能会出现不兼容问题,因此需要选择合适的版本组合。 四、安装和配置Zookeeper Zookeeper是...

    hbase-0.90.5.tar.gz与hadoop0.20.2版本匹配

    确保HBase和Hadoop版本兼容是成功部署的关键,因为不兼容的版本可能会导致各种问题,如数据丢失、性能下降或服务不可用。在实际生产环境中,应该根据项目需求选择合适的HBase和Hadoop版本,以保证系统的稳定性和高效...

    Hadoop3.1.1集成hbase2.1.1

    Hadoop和HBase都是开源的分布式大数据处理框架,Hadoop主要用于大数据的存储和处理,而HBase是一个构建在Hadoop之上的分布式、可扩展、非关系型的NoSQL数据库。Hadoop和HBase的集成允许HBase使用Hadoop的文件系统...

    细细品味Hadoop_Hadoop集群(第12期)_HBase应用开发.pdf

    从给定的文件信息中,我们可以提炼出关于Hadoop集群中HBase应用开发的重要知识点,以下是对这些知识点的详细解析: ### HBase Shell 操作详解 HBase是Hadoop生态系统中一个重要的分布式数据库,用于存储大规模结构...

    Hadoop2.6+HA+Zookeeper3.4.6+Hbase1.0.0 集群安装详细步骤

    Hadoop2.6+HA+Zookeeper3.4.6+Hbase1.0.0 集群安装详细步骤

    搭建hadoop单机版+hbase单机版+pinpoint整合springboot.zip

    搭建一个完整的Hadoop单机版、HBase单机版以及Pinpoint与SpringBoot的整合环境,需要对大数据处理框架和微服务监控有深入的理解。在这个过程中,我们将涉及到以下几个关键知识点: 1. **Hadoop单机版**:Hadoop是...

    大数据云计算技术系列 Hadoop之Hbase从入门到精通(共243页).pdf

    《大数据云计算技术系列:Hadoop之Hbase从入门到精通》 HBase,全称Hadoop Database,是一款基于Hadoop生态系统的分布式列式存储系统,旨在处理海量结构化数据。它借鉴了Google Bigtable的设计思想,但开源并适应了...

    hadoop-0.20.205.0和hbase-0.90.5,集群和单机 安装配置

    Hadoop是一种能够存储和处理大量数据的分布式计算框架,而HBase则是在Hadoop之上构建的一个分布式列式存储系统。本文将详细介绍如何在三台虚拟机上安装配置Hadoop-0.20.205.0和HBase-0.90.5,包括单机模式和集群模式...

    Hadoop+HBase+Java API

    标题 "Hadoop+HBase+Java API" 涉及到三个主要的开源技术:Hadoop、HBase以及Java API,这些都是大数据处理和存储领域的关键组件。以下是对这些技术及其结合使用的详细介绍: **Hadoop** 是一个分布式计算框架,由...

    Hadoop之Hbase从入门到精通

    ### Hadoop之Hbase从入门到精通 #### HBase技术介绍与概述 HBase是一种分布式、高可靠性且高性能的列式存储系统,它基于Hadoop生态体系构建,并且能够支持大规模的数据存储需求。HBase的设计灵感来源于Google的...

    Hbase和Hadoop JMX监控实战

    在大数据处理领域,HBase和Hadoop是两个关键的组件,它们在分布式存储和处理大量数据方面发挥着重要作用。JMX(Java Management Extensions)是一种Java平台标准,用于管理和监控应用程序。在本实战中,我们将深入...

    Hadoop之Hbase从入门到精通 .doc

    "Hadoop之Hbase从入门到精通" HBase 是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用 HBase 技术可在廉价 PC Server 上搭建起大规模结构化存储集群。HBase 是 Google Bigtable 的开源实现,类似 ...

    完整版大数据云计算课程 Hadoop数据分析平台系列课程 Hadoop 07 Hbase 共49页.rar

    4. **Put和Get操作**:Put用于向表中插入数据,Get则用于获取数据,两者都是HBase的基本操作。 5. **Scan操作**:Scan允许一次获取表中多行或多列的数据,常用于数据查询。 6. **索引和过滤器**:HBase支持索引和...

Global site tag (gtag.js) - Google Analytics