我已经设置了一个AWS EMR集群,其中包括spark 2.3.2,hive 2.3.3和hbase 1.4.7。如何配置spark访问配置单元表?
我已经执行了以下步骤,但是结果是错误消息:
java.lang.ClassNotFoundException:java.lang.NoClassDefFoundError: 创建Hive客户端时,org / apache / tez / dag / api / SessionNotRunning 使用类路径:
请确保用于您的hive和hadoop版本的jar为 包含在传递给spark.sql.hive.metastore.jars的路径中
步骤:
cp /usr/lib/hive/conf/hive-site.xml /usr/lib/spark/conf
在/usr/lib/spark/conf/spark-defaults.conf
中添加:
spark.sql.hive.metastore.jars / usr / lib / hadoop / lib / *:/ usr / lib / hive / lib / *
在齐柏林飞艇中,我创建了一个激发会话:
val spark = SparkSession.builder.appName(“ clue”)。enableHiveSupport()。getOrCreate() 导入spark.implicits ._
答案 0 :(得分:0)
您提到的步骤(1,&2)可以很好地进行,只是稍作调整可能会有所帮助。
由于您使用的是hive-2.x
,请配置spark.sql.hive.metastore.jars
并将其分别设置为maven
和spark.sql.hive.metastore.version
,以匹配元存储库2.3.3
的版本。仅使用2.3
作为版本就足够了,在Apache Spark Code
以下是我在spark-default.conf
中设置的工作配置示例:
spark.sql.broadcastTimeout 600 # An arbitrary number that you can change
spark.sql.catalogImplementation hive
spark.sql.hive.metastore.jars maven
spark.sql.hive.metastore.version 2.3 # No need for minor version
spark.sql.hive.thriftServer.singleSession true
spark.sql.warehouse.dir {hdfs | s3 | etc}
hive.metastore.uris thrift://hive-host:9083
使用先前的设置,我已经能够对Zeppelin的数据仓库执行查询,如下所示:
val rows = spark.sql("YOUR QUERY").show
有关连接到外部配置单元元存储的更多详细信息,请参见(Databricks)