我正在尝试连接到HiveServer2并从我的Java应用程序中运行查询。当我在本地服务器上运行时(Hive版本:2.1.1
)。它与以下依赖项完美配合:
compile('org.apache.hadoop:hadoop-core:1.2.1')
compile ('org.apache.hive:hive-jdbc:2.1.0'){
exclude group: 'org.eclipse.jetty.aggregate', module: '*'
exclude group: "org.slf4j", module: "slf4j-log4j12"
exclude group: "log4j", module: "log4j" }
compile ('org.apache.hadoop:hadoop-common:3.0.0'){
exclude group: "org.slf4j", module: "slf4j-log4j12"
exclude group: "log4j", module: "log4j"
}
但是当我在远程服务器上运行时(Hive版本:
0.13.1-SNAPSHOT
)。它引发以下错误。我知道,问题出在hive-jdbc,hadoop-core和hadoop-common版本上。谁能让我知道我需要在Hive 0.13.1-SNAPSHOT
中使用哪些版本的依赖关系SEVERE: A child container failed during start
java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Tomcat].StandardHost[localhost].TomcatEmbeddedContext[]]
最佳答案
经过一些跟踪和错误后,我修复了版本问题。问题是hive-jdbc:2.1.0与Hive 0.13.1-SNAPSHOT不向后兼容,我们需要使用hive-jdbc:0.13.1使其正常工作。毫无疑问,以下代码有效。
compile('org.apache.hadoop:hadoop-core:1.2.1')
compile ('org.apache.hive:hive-jdbc:0.13.1'){
exclude group: 'org.eclipse.jetty.aggregate', module: '*'
exclude group: "org.slf4j", module: "slf4j-log4j12"
exclude group: "log4j", module: "log4j" }
compile ('org.apache.hadoop:hadoop-common:3.0.0'){
exclude group: "org.slf4j", module: "slf4j-log4j12"
exclude group: "log4j", module: "log4j"
}
关于java - org.apache.thrift.TApplicationException:必填字段 'client_protocol'未设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48864963/