在版本2.2.0之前,Spark无法与Hive 2.X通信,所以我被困在使用Hive 1 + Spark 1/2。对于我在两者中都读过的内容:
https://issues.apache.org/jira/browse/SPARK-18112 https://spark.apache.org/releases/spark-release-2-2-0.html
现在可以使用Spark 2 + Hive 2,但我仍然面临一些问题。使用预编译的Spark-without-hadoop,访问时态配置单元表时出现以下错误:
线程“main”中的异常java.lang.IllegalArgumentException:无法使用Hive支持实例化SparkSession,因为找不到Hive类。 在org.apache.spark.sql.SparkSession $ Builder.enableHiveSupport(SparkSession.scala:845) at io.bigdatabenchmark.v2.queries.q05.LogisticRegression $ .main(LogisticRegression.scala:87) at io.bigdatabenchmark.v2.queries.q05.LogisticRegression.main(LogisticRegression.scala) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) 在org.apache.spark.deploy.SparkSubmit $ .org $ apache $ spark $ deploy $ SparkSubmit $$ runMain(SparkSubmit.scala:755) 在org.apache.spark.deploy.SparkSubmit $ .doRunMain $ 1(SparkSubmit.scala:180) 在org.apache.spark.deploy.SparkSubmit $ .submit(SparkSubmit.scala:205) 在org.apache.spark.deploy.SparkSubmit $ .main(SparkSubmit.scala:119) 在org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
我通常通过使用选项“-Phive -Phive-thriftserver”编译我自己的Spark版本来解决这个问题,但默认情况下,Spark将使用Hive 1.2.1绑定构建,如文档中所示。
因此,看起来Spark 2.2.0解决了Spark 2的问题 - > Hive 2绑定但我找不到合适的编译方式,因此可以使用模式2.x访问Metastore。
感谢您的帮助!
答案 0 :(得分:0)
将以下依赖项添加到您的maven项目。
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-hive_2.11</artifactId>
<version>2.2.0</version>
<scope>provided</scope>
</dependency>