
我们都知道 HBase 的数据根据 rowkey 字典序排序的,理解这个概念很重要。
根据 wiki 解释:
通俗的理解,字典序是把字符左对齐,从 左到右比 大小的排序,一旦比出大小就停止比较后续的字符。
那么排序规则是什么?如果只考虑字母的话,就是: a < b < c < < z,当然这个规则也是 人为约定 的,举例以下就是字典序:
有了之前的概念,理解 HBase Rowkey 字典序会容易一点:
下面这里从实现层面举个例子:假如 HBase 要比较 rowkey "19" 和 "2" ,怎么做?
这里值得一提的是:ASCII 可见字符都是单字节表示,所以字符与 ASCII 字节数组是一一对应的。
但如果你用非 ASCII 可见字符做 rowkey ,例如汉字,就会出现不可控因素,因为一个汉字对应的是多个字节。所以建议 rowkey 就采用常见的可见字符,避免用特殊字符。
ASCII 码可显示字符有 95 个,大致顺序如下
第一个是:「空格」,最后一个是:「~」
下一篇将讲讲 rowkey 的设计与优化,包括预分区的选择策略。
wiki >
1、首先Fayson先在本地准备了一堆文件,并上传到HDFS。
2、其次通过Java程序遍历所有生成一个Sequence File,然后把Sequence File入库到HBase,在入库过程中,读取文件的文件名作为Rowkey,另外将整个内容转为bytes存储在HBase表的一个column里。
3、最后可以通过Hue来进行查看。
1)当时怎么实现的忘了,但是应该就是一个简单的拼串。其实这段代码就是每次设一个startkey、endkey。取这中间的数据。
2)tableName应该是外面的一个变量而已。你不用纠结这个。忘了startkey是否要真实存在,如果不要求直接设一下就可以了。如果必须存在,你也可以用startkey和offset来scan。也可以的。
3)另外注意一下缓存的控制,要关闭autocommit。重设缓存,手工flush数据。这样就不至于每条都提交了。
用happybase进行hbase中数据的增删改查
前提:已经安装happybase库(pip install happybase),已有hbase环境并开启thrift通讯端口(nohup hbase thrift start &),thrift默认端口为9090,101030200为hbase主机ip
scan方法:
参数:
row_start、row_stop:起始和终止rowkey,查询两rowkey间的数据
row_prefix:rowkey前缀。注:使用row_prefix的时候,row_start和row_stop不能使用
filter:要使用的过滤器(hbase 092版本及以上生效)
timestamp:按指定时间戳查询
reverse:默认为False。为True时,scan结果按rowkey倒序排列
eg:
put方法:
eg:
△ 如put中的rowkey已存在,则为修改数据
delete方法:
row:删除rowkey为row的数据
columns:指定columns参数时,删除
eg:
删除rowkey为student2的name数据:
删除成功:
batch方法:
1、批量 *** 作
2、使用with管理批量
row方法及rows()方法,检索指定rowkey的数据
检索一条:
检索多条:
返回结果:
eg:
结果:
暂时就这些0v0
以上就是关于我拿到hbase的rdd了,应该怎么转为DataFrame,以便我用sql查询全部的内容,包括:我拿到hbase的rdd了,应该怎么转为DataFrame,以便我用sql查询、HBase 二级索引、hbaseshelltext如何显示命令等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)