Hbase的python操作

Posted 大数据的那些事

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hbase的python操作相关的知识,希望对你有一定的参考价值。

与上次通过sql语句的方式来操作hbase不同,本节采用python的方式来研究hbase。首先编写一个python脚本,在如下目录中:

打开这个脚本,查看python代码可知这个脚本的功能是创建一个hbase表,其中调用了hbase模块,这个模块与我们的脚本要在同一个目录中。

Hbase的python操作

本地执行这个python脚本,如下:

Hbase的python操作

然后在hbase  shell中通过list可以查看到已经有这个表了new_music_table

Hbase的python操作

通过describe'new_music_table'查看表结构,跟我们在python代码中定义的表结构是一样的。如下:

Hbase的python操作

    写一个python脚本insert_data.py,这个脚本的作用是往new_music_table中插入一条数据

Hbase的python操作

在本地执行这个脚本,如下:

Hbase的python操作

执行完脚本后,在hbase  shell中查看,可以看到这条数据已经插入进来了:

Hbase的python操作

再写一个python脚本get_one_line.py,这个脚本的作用是读取new_music_table中的一条记录:

Hbase的python操作

执行命令,结果是把数据确实读出来了

Hbase的python操作

上面的脚本是读取一条记录,接下来尝试下批量读取数据,先往new_music_table再插入一条数据,

Hbase的python操作

写一个python脚本

Hbase的python操作

执行命令运行这个脚本,结果是把这个表中的数据都读出来了

Hbase的python操作

上面的脚本都调用了一个hbase模块,什么是python的模块呢?当一个目录中有一个文件叫__init__.py,则这个目录就可以当做python的模块。我们要执行的脚本和需要的模块应该在一个路径中。

    在执行MR任务时,这个模块应该分发到各个节点上去。那要怎么将hbase这个模块分发过去呢,用du –sh查看hbase的大小为792k,很小,可以用-file去分发。

Hbase的python操作

但是-file去分发需要做一个压缩成hbase.tgz,如下:

Hbase的python操作

hbase.tgz分发到各节点还不行,因为其他节点还没有thrift,所以还需要将thrift打个压缩包分发过去。

MRrun.sh核心代码

Hbase的python操作

MRmap.py:

Hbase的python操作

Hbase的python操作

Hbase的python操作

将来源数据上传到hdfs中,hadoop  fs -put  input.data  /。在上传数据时发现很慢,原因是文件比较大。

Hbase的python操作

du -sh input.data查看发现有119M,用wc -linput.data查看发现有188万行。运行run脚本:

Hbase的python操作

在浏览器中输入网址http://master:50030/jobdetails.jsp?jobid=job_201801121756_0002,可以打开如下网页(要注意配置域名)

Hbase的python操作

hbase shell中,查看数据,注意不要使用scan查看大数据量的表,不然你就要被bossfile了。当前任务量太大了,MR任务一直执行,怎么办呢,直接kill掉吧

Hbase的python操作

以上是关于Hbase的python操作的主要内容,如果未能解决你的问题,请参考以下文章

Python操作HBase之happybase

通过Python操作hbase api

python操作hbase增删改

python操作hbase增删改

Python 操作 HBase —— Trift Trift2 Happybase 安装使用

spark操作hbase