<分区>
在版本 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,访问时态 hive 表时出现以下错误:
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)
我通常通过使用选项“-Phive -Phive-thriftserver”编译我自己的 Spark 版本来解决这个问题,但默认情况下,Spark 将使用 Hive 1.2.1 绑定(bind)构建,如文档中所示。
因此,似乎 Spark 2.2.0 解决了 Spark 2 -> Hive 2 绑定(bind)的问题,但我找不到合适的方法来编译它,以便它可以访问具有模式 2.x 的元存储。
感谢您的帮助!