Hive Apache NiFi配置单元处理器,配置单元1.1(CDH 5.7.1)

Hive Apache NiFi配置单元处理器,配置单元1.1(CDH 5.7.1),hive,cloudera-cdh,cloudera-manager,apache-nifi,Hive,Cloudera Cdh,Cloudera Manager,Apache Nifi,我使用Cloudera Manager CDH 5.7.1,它只支持Hive 1.1.0。 NiFi 1.0.0-BETA使用Hive 1.2.1 当我尝试使用SelectHiveQL处理器时,出现以下错误:Required字段“client\u protocol”未设置,这意味着配置单元客户端和服务器之间存在版本不匹配 有什么解决这个问题的建议吗 我曾考虑用hivejdbc依赖版本1.1.0而不是默认的1.2.1来构建NiFi,但我希望有更好的解决方案。因为NiFi是一个Apache项目,所以

我使用Cloudera Manager CDH 5.7.1,它只支持Hive 1.1.0。 NiFi 1.0.0-BETA使用Hive 1.2.1

当我尝试使用SelectHiveQL处理器时,出现以下错误:
Required字段“client\u protocol”未设置,这意味着配置单元客户端和服务器之间存在版本不匹配

有什么解决这个问题的建议吗


我曾考虑用
hivejdbc
依赖版本
1.1.0
而不是默认的
1.2.1
来构建NiFi,但我希望有更好的解决方案。

因为NiFi是一个Apache项目,所以它是用Apache JAR(如hive和Hadoop)构建的。但是,您可以使用特定于供应商的概要文件和构建属性为特定的Hadoop发行版构建NiFi

例如,您可以尝试以下方法为CDH 5.7.1构建NiFi发行版:

mvn clean install -DskipTests -Pcloudera -Dhadoop.version=2.6.0-cdh5.7.1 -Dhive.version=1.1.0-cdh5.7.1 -Dhbase.version=1.2.0-cdh5.7.1

Hive处理器使用NiFi Hadoop库NAR提供的Hadoop库,而其他NAR(如Hadoop/HDFS处理器)使用相同的库NAR,因此最好的方法是构建整个过程。否则,您可以尝试只替换与Hadoop/Hive/HBase相关的NAR,看看是否有效。

因为NiFi需要更新版本的Hive,所以有必要删除不受支持的更新功能(例如HiveStreaming和ORC支持),支持旧版本的Thrift,并根据Cloudera特定的库进行构建

我已经创建了当前NiFi-1.1.x版本的一个分支,并对其进行了必要的更改,以使PutHiveQL和SelectHiveQL处理器正常工作,您可以按如下方式构建:

git clone https://github.com/Chaffelson/nifi.git
git checkout nifi-1.1.x-cdhHiveBundle
mvn -T C2.0 clean install -Pcloudera -Dhive.version=1.1.0-cdh5.10.0 -Dhive.hadoop.version=2.6.0-cdh5.10.0 -Dhadoop.version=2.6.0-cdh5.10.0 -DskipTests

我已经在Hortonworks社区论坛上发布了更全面的报道:

感谢您的帮助。我试图构建它时遇到了一个错误<代码>编译失败:错误:包org.apache.hadoop.hive.ql.io.filters不存在
。可能太旧了。有什么想法吗?包不存在,您可以尝试让它工作删除它,并使使用缺少包的函数体为空(无正文)。我这样做并编译了,但协议版本仍然不匹配。