2017-07-26 118 views
1

在版本2.2.0之前,Spark无法与Hive 2.X通信,所以我被Hive 1 + Spark 1/2卡住了。对于我读两种:使用Spark 2.2.0从Hive metastore 2.x读取

https://issues.apache.org/jira/browse/SPARK-18112 https://spark.apache.org/releases/spark-release-2-2-0.html

现在可以使用星火2 +蜂巢2,但我还是遇到了一些问题。使用预编译的火花不-Hadoop的,我收到以下错误访问时间蜂巢表时:​​

Exception in thread "main" java.lang.IllegalArgumentException: Unable to instantiate SparkSession with Hive support because Hive classes are not found. at 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) at org.apache.spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:755) at org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:180) at org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:205) at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:119) at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)

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

因此,看起来Spark 2.2.0解决了Spark 2 - > Hive 2绑定的问题,但我无法找到合适的方式来编译它,因此它可以访问模式2.x的Metastore。

感谢您的帮助!

回答

0

将以下依赖项添加到您的maven项目中。

<dependency> 
     <groupId>org.apache.spark</groupId> 
     <artifactId>spark-hive_2.11</artifactId> 
     <version>2.2.0</version> 
     <scope>provided</scope> 
</dependency> 
+0

我无法在普通文件夹(/spark-2.2.0/pom.xml)和sql项目(/)中添加pom.xml中的新依赖项时完成编译,火花2.2.0/SQL /蜂巢/ pom.xml中)。在这两个测试中,我收到以下错误: '[error] /home/alejandro/Documents/projects/spark/spark-2.2.0/sql/hive/src/main/scala/org/apache/spark/sql/配置单元/ HiveStrategies.scala:165:类型不匹配; [error] found:org.apache.spark.sql.catalyst.catalog.CatalogTable [error] required:org.apache.spark.sql.hive.MetastoreRelation' –

+0

我在我的答案中更新了依赖关系。让我知道这是否有帮助。 –

+0

这次围绕编译成功完成,但是当试图从元存储读取时,我得到:'线程中的异常“main”java.lang.IllegalArgumentException:无法实例化Hive支持的SparkSession,因为找不到Hive类。“ 可能是我将依赖关系放在它不属于的地方。 –

相关问题