NIFI -- 文件数据写入hive

来源:互联网 发布:软件开发财务报表 编辑:程序博客网 时间:2024/06/01 11:34

目的:
nifi在国内的使用相对较少,也有一些博客介绍了一些nifi的概念,但是nifi里面processor的种类非常之多,文档对于每个processor功能描述相对单薄。而且有些地方解释的含含糊糊,说白了,就是还是有点使用门槛的。本文直接上实际的例子。可以供大家参考。一些涉及到的知识点不会细讲。


nifi使用背景:
希望借助nifi监控某个目录,能够将被监控目录下的数据文件采集并写入hive中去。nifi提供了PutHiveQL、PutHiveStreaming、PutSQL三种processor,这三种processor对flowfile的要求也不尽相同。本文选用了如下图1所示的几种processor作为功能测试。
图1


需要了解的知识:
1,hive的orc存储格式。
2,hive的分区、分桶概念,使用场景。
3,nifi flowfile、processor基本概念。


集群环境介绍:
1,CDH5.11
2,nifi1.4


上述案例遇到的坑:

1,版本不兼容:

  • 本文用的是CDH,hive版本更迭并不快,还停留在1.1阶段,nifi中对于hive的processor都集成在nifi-hive-nar-1.4.0.nar(lib目录下),这个里面用的hive相关的jar包却是1.2。在使用PutHiveQL的时候版本不兼容问题就出现了:
    图2

  • 解决办法:将nifi-hive-nar-1.4.0.nar内的关于hive的jar包替换了(没有逐一尝试需要替换具体的那几个,思路是这样的。不成功就是替的不够全。)
    上述动作完成后运行的时候会还会有另外一个报错就是MR的类找不到,再把跟MR相关的jar包替换了。
    到此,版本不兼容的问题解决了。


2,使用PutHiveStreaming的坑:
- 数据采用orc存储格式(别的列式存储未测试。文本格式测试过不行。)
- 采用分区,分桶技术。不采用数据无法写入hive(是否能够调整参数未测出来。)
- 需要向nifi-hive-nar-1.4.0.nar加入kryo-2.21.jar(jar包干嘛的自行科普),会导致自动创建分区的功能无法使用。

注:不想在建表的时候就建分区,可以通过PutHiveStreaming参数设置来自动创建分区;也可以预先创建分区。


最后上nifi processor的配置吧,本文只是说明下此路可通。

图3图4图5

原创粉丝点击