我说实话,NiFi的坑真的挺多的。。。

1、PutHiveStreaming processor的使用

  具体配置可参考:https://community.hortonworks.com/articles/88309/using-puthivestreaming-processor-in-nifi.html

  该控制器配置需要hive启用事物;且目前只支持orc格式,且建表需要分桶,开启事务等,建表示例如下:

create table test_trancaction
(user_id Int,name String)
clustered by (user_id) into 3 buckets
stored as orc TBLPROPERTIES ('transactional'='true');

  hive的事物配置,hive-site.xml配置添加:

<!--start for trancaction -->

<property>
<name>hive.support.concurrency</name>
<value>true</value>
</property> <property>
<name>hive.enforce.bucketing</name>
<value>true</value>
</property> <property>
<name>hive.exec.dynamic.partition.mode</name>
<value>nonstrict</value>
</property> <property>
<name>hive.txn.manager</name>
<value>org.apache.hadoop.hive.ql.lockmgr.DbTxnManager</value>
</property> <property>
<name>hive.compactor.initiator.on</name>
<value>true</value>
</property> <property>
<name>hive.compactor.worker.threads</name>
<value>1</value>
</property>

hive的事物性配置、验证参考:https://my.oschina.net/wangjiankui/blog/711942

  具体配置:

  PutHiveStreaming

    NiFi使用总结 一 hive到hive的PutHiveStreaming processor和SelectHiveQL-LMLPHP

SelectHiveQL:

双击,进入config配置:

  NiFi使用总结 一 hive到hive的PutHiveStreaming processor和SelectHiveQL-LMLPHP

HiveConnectionPool配置:

   NiFi使用总结 一 hive到hive的PutHiveStreaming processor和SelectHiveQL-LMLPHP

勾选自动终止关系类型:可以都选上

NiFi使用总结 一 hive到hive的PutHiveStreaming processor和SelectHiveQL-LMLPHP

选择调度策略:

有三种,常用的有time driven,CRON driven

简单测试使用Run Schedule不要用0秒,不然会一直不停的在写入数据。。。

有关调度策略下篇在做具体说明

NiFi使用总结 一 hive到hive的PutHiveStreaming processor和SelectHiveQL-LMLPHP

运行一下看看:

  源数据:

  NiFi使用总结 一 hive到hive的PutHiveStreaming processor和SelectHiveQL-LMLPHP

配置好之后右键点击start

  NiFi使用总结 一 hive到hive的PutHiveStreaming processor和SelectHiveQL-LMLPHP

过一分钟左右查看插入数据:

  NiFi使用总结 一 hive到hive的PutHiveStreaming processor和SelectHiveQL-LMLPHP

条数有可能不止14条,后续再研究调度的程序设置;

到此为止简单实现了hive-hive的配置

05-11 19:23