我拿到hbase的rdd了,应该怎么转为DataFrame,以便我用sql查询

我拿到hbase的rdd了,应该怎么转为DataFrame,以便我用sql查询,第1张

我们都知道 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如何显示命令等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/10149403.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-05
下一篇2023-05-05

发表评论

登录后才能评论

评论列表(0条)

    保存