Apache spark AWS EMR 5.11.0-Spark上的Apache Hive

Apache spark AWS EMR 5.11.0-Spark上的Apache Hive,apache-spark,hive,amazon-emr,Apache Spark,Hive,Amazon Emr,我正在尝试在AWS EMR 5.11.0的Spark上安装Apache Hive。 ApacheSpark版本-2.2.1 Apache配置单元版本-2.3.2 纱线日志显示以下错误: 18/01/28 21:55:28错误应用程序管理员:用户类引发异常:java.lang.NoSuchFieldError:SPARK\u RPC\u服务器\u地址 java.lang.NoSuchFieldError:SPARK\u RPC\u服务器\u地址 位于org.apache.hive.spark.cl

我正在尝试在AWS EMR 5.11.0的Spark上安装Apache Hive。 ApacheSpark版本-2.2.1 Apache配置单元版本-2.3.2 纱线日志显示以下错误:

18/01/28 21:55:28错误应用程序管理员:用户类引发异常:java.lang.NoSuchFieldError:SPARK\u RPC\u服务器\u地址 java.lang.NoSuchFieldError:SPARK\u RPC\u服务器\u地址 位于org.apache.hive.spark.client.rpc.RpcConfiguration(RpcConfiguration.java:47) 位于org.apache.hive.spark.client.RemoteDriver(RemoteDriver.java:134) 位于org.apache.hive.spark.client.RemoteDriver.main(RemoteDriver.java:516) 在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处 位于sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)中 位于java.lang.reflect.Method.invoke(Method.java:498) 位于org.apache.spark.deploy.warn.ApplicationMaster$$anon$2.run(ApplicationMaster.scala:635)

hive-server2.log: 2018-01-28221:56:50109错误[HiveServer2后台池:Thread-68([])]:client.SparkClientImpl(SparkClientImpl.java:(112))-等待客户端连接时超时。 可能的原因包括网络问题、远程驱动程序错误或群集没有可用资源等。 请查看纱线或火花驱动程序日志以了解更多信息。 java.util.concurrent.ExecutionException:java.util.concurrent.TimeoutException:等待客户端连接时超时。 在io.netty.util.concurrent.AbstractFuture.get(AbstractFuture.java:41)~[netty-all-4.0.52.Final.jar:4.0.52.Final] 在org.apache.hive.spark.client.SparkClientImpl.(SparkClientImpl.java:109)~[hive-exec-2.3.2-amzn-0.jar:2.3.2-amzn-0] 在org.apache.hive.spark.client.SparkClientFactory.createClient(SparkClientFactory.java:80)~[hive-exec-2.3.2-amzn-0.jar:2.3.2-amzn-0] 在org.apache.hadoop.hive.ql.exec.spark.RemoteHiveSparkClient.createRemoteClient(RemoteHiveSparkClient.java:101)~[hive-exec-2.3.2-amzn-0.jar:2.3.2-amzn-0] 在org.apache.hadoop.hive.ql.exec.spark.RemoteHiveSparkClient.(RemoteHiveSparkClient.java:97)~[hive-exec-2.3.2-amzn-0.jar:2.3.2-amzn-0] 在org.apache.hadoop.hive.ql.exec.spark.HiveSparkClientFactory.createHiveSparkClient(HiveSparkClientFactory.java:73)~[hive-exec-2.3.2-amzn-0.jar:2.3.2-amzn-0] 在org.apache.hadoop.hive.ql.exec.spark.session.SparkSessionImpl.open(SparkSessionImpl.java:62)~[hive-exec-2.3.2-amzn-0.jar:2.3.2-amzn-0] 在org.apache.hadoop.hive.ql.exec.spark.session.SparkSessionManagerImpl.getSession(SparkSessionManagerImpl.java:115)~[hive-exec-2.3.2-amzn-0.jar:2.3.2-amzn-0] 在org.apache.hadoop.hive.ql.exec.SparkUtilities.getSparkSession(SparkUtilities.java:126)~[hive-exec-2.3.2-amzn-0.jar:2.3.2-amzn-0]

而且, 2018-01-28221:56:50110错误[HiveServer2后台池:Thread-68([])]:spark.SparkTask(SessionState.java:printError(1126))-未能执行spark任务,异常为“org.apache.hadoop.hive.ql.metadata.HiveException(未能创建spark客户端)” org.apache.hadoop.hive.ql.metadata.HiveException:未能创建spark客户端。 位于org.apache.hadoop.hive.ql.exec.spark.session.SparkSessionImpl.open(SparkSessionImpl.java:64) 位于org.apache.hadoop.hive.ql.exec.spark.session.SparkSessionManagerImpl.getSession(SparkSessionManagerImpl.java:115) 位于org.apache.hadoop.hive.ql.exec.SparkUtilities.getSparkSession(SparkUtilities.java:126) 位于org.apache.hadoop.hive.ql.exec.spark.SparkTask.execute(SparkTask.java:103) 位于org.apache.hadoop.hive.ql.exec.Task.executeTask(Task.java:199) 位于org.apache.hadoop.hive.ql.exec.TaskRunner.runSequential(TaskRunner.java:100) 位于org.apache.hadoop.hive.ql.Driver.launchTask(Driver.java:2183) 位于org.apache.hadoop.hive.ql.Driver.execute(Driver.java:1839) 位于org.apache.hadoop.hive.ql.Driver.runInternal(Driver.java:1526) 位于org.apache.hadoop.hive.ql.Driver.run(Driver.java:1237) 位于org.apache.hadoop.hive.ql.Driver.run(Driver.java:1232) 位于org.apache.hive.service.cli.operation.SQLOperation.runQuery(SQLOperation.java:255) 位于org.apache.hive.service.cli.operation.SQLOperation.access$800(SQLOperation.java:91) 位于org.apache.hive.service.cli.operation.SQLOperation$BackgroundWork$1.run(SQLOperation.java:348) 位于java.security.AccessController.doPrivileged(本机方法) 位于javax.security.auth.Subject.doAs(Subject.java:422) 位于org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1698) 位于org.apache.hive.service.cli.operation.SQLOperation$BackgroundWork.run(SQLOperation.java:362) 位于java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) 在java.util.concurrent.FutureTask.run(FutureTask.java:266)处 位于java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) 位于java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) 运行(Thread.java:748) 原因:java.lang.RuntimeException:java.util.concurrent.ExecutionException:java.util.concurrent.TimeoutException:等待客户端连接时超时


有人能指出我在配置中可能缺少什么吗?

很抱歉,EMR还不支持Spark上的Hive。我自己还没有尝试过,但我认为您的错误可能是因为EMR支持的Spark版本与Hive所依赖的Spark版本不匹配。上次我检查时,在Spark上运行配置单元时,配置单元不支持Spark 2.x。考虑到您的第一个错误是NoSuchFieldError,看起来版本不匹配是最可能的原因。超时错误可能是个误会。

EMR Spark支持Hive版本1.2.1,而不是Hive 2.x版本。您能检查一下/usr/lib/spark/jars中提供的hive jar版本吗/<
HIVE_AUX_JARS_PATH=$(find /usr/lib/spark/jars/ -name '*.jar' -and -not -name '*slf4j-log4j12*' -printf '%p:' | head -c-1) hive
SET hive.execution.engine = spark;
export HIVE_AUX_JARS_PATH=$(find /usr/lib/spark/jars/ -name '*.jar' -and -not -name '*slf4j-log4j12*' -printf '%p:' | head -c-1)