我已经使用 hive 设置了 AWS EMR 集群。我想使用 java 从本地计算机连接到 hive thrift 服务器。我尝试了以下代码 -
Class.forName("com.amazon.hive.jdbc3.HS2Driver");
con = DriverManager.getConnection("jdbc:hive2://ec2XXXX.compute-1.amazonaws.com:10000/default","hadoop", "");
http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/HiveJDBCDriver.html.As开发人员指南中提到,将与 hive jdbc 驱动程序相关的 jar 添加到类路径中。 但我在尝试建立连接时遇到异常。 我能够使用上面的代码(使用不同的 jdbc 驱动程序)连接到简单 hadoop 集群上的 hive 服务器。 如果我遗漏了什么,有人可以建议吗? 是否可以使用 hive jdbc 从本地计算机连接到 AWS EMR 上的 hive 服务器?
最佳答案
(合并评论中的答案)
Hive 在端口 10000 上运行,但仅在本地运行,您必须创建到 emr 的 ssh 隧道。
以下内容来自documentation对于 hive 0.13.1
创建隧道
ssh -o ServerAliveInterval=10 -i path-to-key-file -N -L 10000:localhost:10000 hadoop@master-public-dns-name
连接到 JDBC
jdbc:hive2://localhost:10000/default
关于hadoop - 无法使用 java 连接到 AWS EMR 上的 hive,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30588157/