在下面的代码中,我试图从 Spark 启动一个 Hive 节俭服务器:
val conf = new SparkConf().setAppName("HiveDemo")
val sc = new SparkContext(conf)
val sql = new HiveContext(sc)
sql.setConf("hive.server2.thrift.port", "10001")
val df = sql.read.parquet("s3n://...")
df.registerTempTable("test")
HiveThriftServer2.startWithContext(sql)
while (true) {
Thread.`yield`()
}
我使用以下配置将此代码作为 EMR 集群上的一个步骤运行:
emr-4.6.0
spark 1.6.1
hive 1.0.0
我正在附加到集群以测试是否使用以下方法直线创建表:
!connect jdbc:hive2://localhost:10001
我收到错误:无法使用 JDBC URI 打开客户端传输:jdbc:hive2://localhost:10001:java.net.Connect异常:连接被拒绝
我在 EMR 上是否缺少其他设置步骤?
实际上这个问题在 Hive 1.3.0 和 2.0.0 中得到了修复。因此,请升级您的版本。
出现此问题的原因是 Beeline 使用失败的连接会导致故障和泄漏。。所有( error reproducing, how it is solved and which versions are containing the fix
) 都包含在此链接中。
希望对您有所帮助。
UPDATE1:
你的 Hive 服务器是否在 HTTP 模式下运行?
在 HTTP 模式下运行时HiveServer2
的连接 URL:-
jdbc:hive2://<host>:<port>/<db>;transportMode=http;httpPath=<http_endpoint>
哪里:-
<http_endpoint>
是在 hive-site.xml
中配置的相应 HTTP 终结点。默认值为 cliservice。
HTTP 传输模式的默认端口为 10001。
资源链接:
- Hive 客户端详细信息 Hive JDBC:
- 无法使用 JDBC URI 打开客户端传输