1

在 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 类。在 io.bigdatabenchmark.v2.queries.q05.LogisticRegression$.main(LogisticRegression.scala:87) 在 io.bigdatabenchmark.v2 的 org.apache.spark.sql.SparkSession$Builder.enableHiveSupport(SparkSession.scala:845)。 query.q05.LogisticRegression.main(LogisticRegression.scala) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 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.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.

我通常通过使用选项“-Phive -Phive-thriftserver”编译我自己的 Spark 版本来解决此问题,但默认情况下,Spark 将使用 Hive 1.2.1 绑定构建,如文档中所示。

因此,Spark 2.2.0 似乎解决了 Spark 2 -> Hive 2 绑定的问题,但我找不到合适的方法来编译它,以便它可以访问具有模式 2.x 的元存储。

谢谢您的帮助!

4

1 回答 1

0

Add following dependency to your maven project.

<dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-hive_2.11</artifactId>
        <version>2.2.0</version>
        <scope>provided</scope>
</dependency>
于 2017-07-26T10:50:00.967 回答