你好,游客 登录
背景:
阅读新闻

Scrapy 存数据到Hbase

[日期:2018-04-02] 来源:简书  作者: [字体: ]

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





收藏 推荐 打印 | 录入:Cstor | 阅读:
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数
点评:
       
评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款