Scrapy 存数据到Hbase

网上很多教程都是使用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的步骤就已经完成了。

《Scrapy 存数据到Hbase》 我的Python自学交流群

    原文作者:徐代龙
    原文地址: https://www.jianshu.com/p/fc2497608ec2
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞