python程序调用Hbase

本文介绍了如何使用Python来调用HBase进行数据存储。通过解析网页抓取电子商务网站的商品信息,将数据存储在HBase中。文章详细讲解了HBase的表结构设计,包括商品属性和网页数据的column family,并展示了Python调用HBase的Thrift接口创建表、扫描表的代码示例。
摘要由CSDN通过智能技术生成

最近在写一个专有的爬虫,目的是抓取电子商务网站的图片和商品信息。为了快速开发, 开发语言使用python,使用了BeautifulSoap和mechnize库去爬取网页和做网页信息提取。网页信息和parse完的库存储在了hbase系统里。

 

搭建一个单机版的hbase非常简单,先部署yahoo的hadoop release(不要用apache的,问题比较多,yahoo发布的版本较为稳定),再部署hbase,这个最好是使用cloudera的hbase发布版本,都是经过大量的测试的。

 

具体的流程是这样的:

0。 选择源url(root url),从一个购物网站(淘宝,京东都有较好的类目)选择自己需要的几个类目

1。 先抓取商品的list页面,这一部需要分析目的网站的url规则,各个网站都不同。

2。 然后抓起商品的detail页面,我们把商品的detail信息存储在hbase中

 

hbase的table结构如下:

 

 

我们把item id作为row key,当然还需要加上前缀区分不同的购物网站;建立一个column family作为商品的属性,比如title,价格,类目,地点等等;再建立一个column family存储网页的所有信息,以备未来需要parse网页里面的其他数据。

hbase中,不同的column family列数据存放在不同的数据文件中,不考虑cache的情况下,做行选择时,如果所需的数据在同一个column family只需要一次磁盘读取,而数据位于多个column family,比如表里有多个column family又做了select * from的这种选择,则需要多次磁盘读取。

 

我们的item_property是轻量级的数据,放在同一个column family中,而item_page_data是一个原始网页,往往大小超过50KB,放在另外一个column family中。hbase设计的目的是支持宽表的应用,因此创建表时,只需要制定column family,不需要制定列的具体名字。

 

接下来使用python调用hbase,hbase自带了thrift支持,我们直接从apache的网站下载thrift包,编译安装好之后,到hbase的系统目录:

 

hbase/src/java/org/apache/hadoop/hbase/thrift/

执行:
thrift --gen py Hbase.thrift
把生存的gen-py目录中的hbase目录拷贝到自己的代码中就可以直接使用了。

 

在hbase的sample目录hbase/src/examples/thrift中,有个非常好的例子,DemoClient.py,基本照着做就可以了。

 

下面贴的是我的建表脚本,记住只要指定column family就可以了,具体的column在插入数据调用mutateRow()时再指定。

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值