我说实话,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
SelectHiveQL:
双击,进入config配置:
HiveConnectionPool配置:
勾选自动终止关系类型:可以都选上
选择调度策略:
有三种,常用的有time driven,CRON driven
简单测试使用Run Schedule不要用0秒,不然会一直不停的在写入数据。。。
有关调度策略下篇在做具体说明
运行一下看看:
源数据:
配置好之后右键点击start
过一分钟左右查看插入数据:
条数有可能不止14条,后续再研究调度的程序设置;
到此为止简单实现了hive-hive的配置