Scrapy 存数据到Hbase
2018-03-17 本文已影响74人
简书用户9527
网上很多教程都是使用Scrapy存数据到MongoDB,Mysql或者直接存入Excel中的,很少有存入到Hbase里面的
前言
为什么没有像大多数网上那样将数据存入到MongoDB,Mysql中呢,因为项目中使用到Hbase加上阿里云的推荐引擎系统,
Hbase是Hadoop的一个子项目,要想用到Hbase软件的服务,需要进行Hadoop跟zoopeer的环境的安装。这里就不对Hbase与Hadoop的环境搭载进行深入的探索了。
Hbase在Scrapy中的应用
1 这里不推荐使用原生的Python连接Hbase的库,推荐使用HappyBase
HappyBase 是 FaceBook 员工开发的操作 HBase 的 Python 库,其基于 Python Thrift,但使用方式比 Thrift 简单、简洁许多,已被广泛应用
(一) HappyBase的安装
pip install happybase
(二) 在服务器端(安装Hbase软件的机器)启动hbase thrift服务
nohup hbase thrift -p 9090 start &
nohup是一个当远程连接服务器的窗口关闭时,服务器端的命令还在运行的命令,具体可以直接搜一下
(三)在Scrapy中的settings进行配置host和table
HBASE_HOST = '192.168.22.15'
HBASE_TABLE = 'test'
这里的hbase_table 即表名
(四)在pipelines.py中编写Hbase入库的Pipeline
class NewsHBasePipeline(object):
def __init__(self):
host = settings['HBASE_HOST']
table_name = settings['HBASE_TABLE']
connection = happybase.Connection(host)
table = connection.table(table_name)
self.table = table
def process_item(self, item, spider):
newsTitle = item['newsTitle']
newsSource= item['newsSource']
newsURL = item['newsUrl']
self.table.put(md5(newsTitle + newsSource).hexdigest(),
{'cf1:newsTitle ': newsTitle , 'cf1:newsSource': newsSource, 'cf1:newsUrl': newsUrl})
return item
(五)在setting.py文件中配置Pipeline
ITEM_PIPELINES = {
'newsspider.pipelines.NewsspiderPipeline': 500,
'newsspider.pipelines.NewsHBasePipeline': 1
}
总体上,Scrapy存数据到Hbase的步骤就已经完成了。
我的Python自学交流群