`

HBase处理中文字符串

阅读更多
摘自:http://blog.csdn.net/pirateleo/article/details/7957109



Author:Pirate Leo
myBlog: http://blog.csdn.net/pirateleo/
myEmail: codeevoship@gmail.com
转载请注明出处,谢谢。
文中可能涉及到的API:

Hadoop/HDFS:http://hadoop.apache.org/common/docs/current/api/

HBase: http://hbase.apache.org/apidocs/index.html?overview-summary.html

Begin!
在设置scan的startRowKey与endRowKey时,经常需要在某个条件字符串后面补充出一个范围。(再比如SingleColumnValueFilter也会用到)

比如:我的条件字符串是“abc”,scan时我需要将下述内容都囊括到我scan的范围内。

abc123

abcdabc

abccca

....

这时候我startRowKey使用“abc”即可,上述字符串按字典序都比“abc”要大,“abc”串c之后的值是0嘛~

而endRowKey最初我使用了“abc~”,因为我查ASCII码表时‘~’是倒数第二个,值为127,足够大,肯定大于上述串中的1、d、c等字符。

这样做,在处理英文数据时就足够了,系统运行正常。


但当我处理中文数据时,中文一般都是以UTF-8格式处理的,一个汉字表示出来类似“0xe6,0xc2,0xe1”。0xe6大于127。所以使用‘~’遇到中文必然悲催。

我的解决方法:

使用UltraEdit,进入十六进制编辑模式,将值改为FF。然后回到文本模式,将刚才的字符复制下来。这个字符应该是一个不可显示的字符,看着好像两个空格的长度。

然后在设置endRowKey时

new String(name + "  ");  //这里只是示例,引号间就是刚才复制的那个字符。将这个字符串作为endRowKey,果然所有的中文字符就囊括在内了。


另外一定要注意:使用HBase API时不要使用str.getBytes将String转化为byte[] ,而应该使用Bytes.toBytes(str);同样使用Bytes.toString(bytes);完成逆向转换。

分享到:
评论

相关推荐

    hbase权威指南源代码下载

    列族是逻辑上的分类,包含一组相关的列,列的命名是列族前缀加冒号后的任意字符串。每个单元格由行键、列族、列和时间戳唯一标识,可以有多个版本,以追踪数据的历史变化。 HBase的架构基于Bigtable的设计,主要...

    hbase0.97官方中文文档

    - 行键:唯一标识每一行,用于数据定位,通常为字符串。 - 列族:逻辑上的数据分组,每个列族下可以有任意多的列,列名在使用时动态定义。 - 列:列族下的具体字段,由列族名+列限定符(Qualifier)组成。 - ...

    中文地址分词及匹配项目

    标题中的“中文地址分词及匹配项目”是一个专注于处理中文地址的系统,它涉及到两个主要技术:中文地址的分词和地址匹配。分词是将连续的文本序列切分成具有独立意义的词语,而在中文环境下,由于没有明显的空格作为...

    opentsdb支持汉字版本

    在原版代码中,由于使用了ISO8859-1编码,所以对含有汉字的查询字符串处理不当。修改后的版本将编码格式更改为支持汉字的UTF-8,这样就可以正确地解析和存储汉字数据。 修改的过程可能包括以下步骤: 1. 将`...

    hadoop相关知识习题

    Rowkey设计原则应尽量简洁,通常使用字符串,避免使用汉字以确保排序效率。 8. HBase可以通过MapReduce或Coprocessor实现二级索引,二级索引的核心是倒排表,是对Rowkey的一级索引的补充。 9. Bloom Filter是一种...

    java解析IP库获取对应中文省市及运营商(IP数据截止2014年10月)

    总的来说,解析和使用“纯真IP库”在Java中涉及到文件读取、字符串处理、数据结构选择、查询算法设计以及异常处理等多个知识点。理解并掌握这些技能,对于开发涉及IP定位功能的Java应用程序至关重要。虽然这里的IP...

    [SQL.Cookbook(中文版)].(美)莫利纳罗.part03.rar

    11. **数据类型和函数**:熟悉各种内置数据类型,如数值、字符串、日期/时间等,以及一系列内置函数,如字符串函数、数学函数、日期函数等。 12. **窗口函数**:掌握RANK、ROW_NUMBER、LAG和LEAD等高级功能,它们在...

    hive学习资料.rar

    文档“hive函数大全2.doc”和“hive函数大全.doc”很可能详尽列出了Hive支持的所有内置函数,包括聚合函数(如COUNT、SUM、AVG)、数学函数(如ABS、SQRT、RAND)、字符串函数(如CONCAT、SUBSTRING、TRIM)、日期...

    nosql分布式数据库期末考试题.docx

    - **空字符串**: 不允许作为集合名称。 **11. MongoDB 主键** - **UUID**: 通用唯一识别码,常用于作为主键。 - **Sequence**: 序列,也可以作为主键生成方式之一。 - **Auto-increment**: 自动递增,MongoDB 默认...

    最新版本医学名词,诊断名称,手术名称

    每个子类别的对象内部,又包含两个字符串数组,分别存储对应的中文名称和英文名称。这种数据结构设计有利于进行多语言的支持和信息检索。 "大数据"标签提示我们,这些医学名词可能被用于大规模数据分析或挖掘项目。...

    自己总结的Kettle使用方法和成果.doc

    时间字段换到 Excel 为空,修改 SELECT 语句中使用 TO_CHAR 转换成字符串,例如:TO_CHAR(START_TIME, 'yyyy-mm-dd HH24:MM:SS') AS START_TIME。Excel 中的记录不能超过 65535 条,否则会自动关闭文件,导致转换...

    大数据面试宝典包含java基础和spring面试题

    - `char`类型可以存储一个中文汉字,因为Java采用Unicode编码,单个`char`可以表示大部分字符。 ##### 23. 抽象类与接口 - **抽象类**:可以有具体实现,也可以有抽象方法。 - **接口**:只能定义抽象方法,Java 8...

    阿里巴巴面试官手册.pdf

    - **Redis的数据类型**:字符串、哈希、列表、集合、有序集合等。 - **Redis的过期策略**:包括定时删除和惰性删除两种机制。 - **Redis的内存淘汰机制**:当内存不足时自动删除一些key来释放空间。 - **渐进式...

Global site tag (gtag.js) - Google Analytics