Welcome 微信登录

首页 / 数据库 / MySQL / HBase在处理中文字符串时的问题

文中可能涉及到的API:Hadoop/HDFS:http://hadoop.apache.org/common/docs/current/api/HBase: http://hbase.apache.org/apidocs/index.html?overview-summary.htmlBegin! 在设置scan的startRowKey与endRowKey时,经常需要在某个条件字符串后面补充出一个范围。(再比如SingleColumnValueFilter也会用到)比如:我的条件字符串是“abc”,scan时我需要将下述内容都囊括到我scan的范围内。abc123abcdabcabccca....这时候我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 增量备份相关资讯      Hbase  HBase处理中文字符串 
  • HBase 参考文档翻译之 Getting   (08月15日)
  • HBase应用开发回顾与总结系列  (01月10日)
  • Apache HBase 2015年发展回顾与未  (01月04日)
  • 为啥HBase需要搭建SQL引擎层  (02月19日)
  • HBase表数据分页处理  (01月10日)
  • Hbase VS Oracle  (11/21/2015 20:22:40)
本文评论 查看全部评论 (0)
表情: 姓名: 字数

版权所有©石家庄振强科技有限公司2024 冀ICP备08103738号-5 网站地图