NIFI的使用——MongoDB到Hive

Nifi 是一个开源的数据处理工具,可以通过简单的Processor对数据流进行处理。本文以MongoDB数据同步至Hive为例,介绍Nifi的使用配置:

1、MongoDB数据源

本测试环境在MongoDB中创建了一个名为nancy的数据库和名为names的表,表中有13条数据,每条数据包含“name”和“_id”字段,数据如下:

2、NIFI处理器

用NIFI把MongoDB的数据导到Hive中需要四个处理器如下:

(1)GetMongo

获取MongoDB中的数据,需要填写MongoDB的url,端口为“27017”,还需填写数据库名和表名如下,其他非必填选项可参考官方文档:

(2)ConvertJSONToAvro

MongoDB数据的存储格式为JSON,Hive的数据存储在HDFS中,格式为ORC,所以需要将JSON数据转换为ORC格式,可用NIFI提供的处理器先将JSON转换为Avro,再将Avro格式转换为ORC。

JSON转Avro配置如下:

此处Record schema要填写的是转换成的Avro格式,Avro的schema是用JSON的格式表示的,形式如{“type”:”typeName”…attributes…}  typeName可以是原生类型或者其它复杂类型,此处用的是复杂类型Records,Records使用类型名称“record”,并且支持三个必选属性:

  1. type:必有属性,此处为record
  2. name:必有属性,是一个JSON string,提供了记录的名字
  3. fields:必有属性,是一个JSON数组,数组中列举了所有的field。每一个field都是一个JSON对象,并且具有如下属性:

name: 必选属性,field的名字,是一个JSON string。
    type: 必选属性,定义Schema的一个JSON对象,或者是命名一条记录定义的JSON string。

type对应关系为

 还有一些可选属性此处不具体描述,此部分有关Avro格式规范可参考文献(http://blog.sina.com.cn/s/blog_567e650201011s7n.html

因为MongoDB里的数据有两个字段,一个为string格式的name,一个为object格式的_id,所以转换成Avro格式为如下:

(3)ConvertAvroToORC

将Avro格式转换为ORC格式,配置如下:

需要事先创建Hive里的表mongo_test:

        CREATE EXTERNAL TABLE IF NOT EXISTS mongo_test (name STRING, .._id MAP<STRING, STRING>) STORED AS ORC

    (注意:需在_id前加上..转移符)

(4)PutHDFS

将数据put到Hive表对应的HDFS文件中,配置如下:

3、在Hive中查看数据

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值