我正在开发nifi处理器来连接hive并使用controller服务执行查询。我能够在nifi中部署它并尝试运行它,但它失败了,出现以下异常
RegisterSchema[id=6b1152ca-015f-1000-d7b9-e44e251aba70] failed to process due to java.lang.NoSuchFieldError: HIVE_CLI_SERVICE_PROTOCOL_V7; rolling back session: {}
java.lang.NoSuchFieldError: HIVE_CLI_SERVICE_PROTOCOL_V7
at org.apache.hive.jdbc.HiveConnection.<init>(HiveConnection.java:175)
at org.apache.hive.jdbc.HiveDriver.connect(HiveDriver.java:105)
at org.apache.commons.dbcp.DriverConnectionFactory.createConnection(DriverConnectionFactory.java:38)
at org.apache.commons.dbcp.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.java:582)
at org.apache.commons.dbcp.BasicDataSource.validateConnectionFactory(BasicDataSource.java:1556)
at org.apache.commons.dbcp.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:1545)
at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1388)
at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044)
下面是我的版本依赖关系
配置单元版本:1.1.0 hadoop:2.7.3
<!-- https://mvnrepository.com/artifact/org.apache.hive/hive-jdbc -->
<dependency>
<groupId>org.apache.hive</groupId>
<artifactId>hive-jdbc</artifactId>
<version>1.1.0-cdh5.10.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.hive/hive-jdbc -->
<dependency>
<groupId>org.apache.hive</groupId>
<artifactId>hive-service</artifactId>
<version>1.1.0-cdh5.10.0</version>
</dependency>
有什么提示吗?
1条答案
按热度按时间vyswwuz21#
这个问题似乎是相关的,这意味着apachehive1.1.0对于hadoop2.6.0上运行的配置单元来说“太旧了”。如果您只计划部署在特定于供应商的hadoop版本上(例如hdp或cdh,而不是apachehadoop),那么您可能希望将它们的存储库添加到pom中(参见顶级nifi pom的示例),并将版本设置为对应于它们的hadoop版本的特定于供应商的版本。
例如,apachenifi中现有的配置单元nar与hdp的更新版本不兼容,因为hdp配置单元比相应的apache配置单元基线更新。因此,可以设置特定于供应商的配置文件(
-Phortonworks
在本例中)和重写属性,例如hive.version
以及hive.hadoop.version
,设置为特定于供应商的值。