在 EMR 上启动 Hive 节俭服务器时出错



在下面的代码中,我试图从 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。

资源链接:

  1. Hive 客户端详细信息
  2. Hive JDBC:
  3. 无法使用 JDBC URI 打开客户端传输

最新更新