使用sparksql访问配置单元表

jpfvwuh4  于 2021-06-24  发布在  Hive
关注(0)|答案(1)|浏览(346)

我已经设置了一个aws emr集群,其中包括spark 2.3.2、hive 2.3.3和hbase 1.4.7。如何配置spark以访问配置单元表?
我已执行以下步骤,但结果是错误消息:
java.lang.classnotfoundexception:java.lang.noclassdeffounderror:org/apache/tez/dag/api/sessionnotrunning使用类路径创建配置单元客户端时:
请确保传递到spark.sql.hive.metastore.jars的路径中包含用于您的hive和hadoop版本的JAR
步骤: 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/
在齐柏林飞艇中,我创建了一个spark会话:
val spark=sparksession.builder.appname(“clue”).enablehivesupport().getorcreate()导入spark.implicits_

kzmpq1sx

kzmpq1sx1#

你提到的第(1,&2)步,除了可能对你有帮助的一些小调整外,还可以做一些局部的调整。
既然你用的是 hive-2.x ,配置 spark.sql.hive.metastore.jars 设置为 maven 取而代之的是 spark.sql.hive.metastore.version 以匹配元存储的版本 2.3.3 . 只要使用就足够了 2.3 作为版本,请参阅apachespark代码中的why
下面是我在中设置的工作配置示例 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

通过前面的设置,我可以对齐柏林飞艇中的数据仓库执行如下查询:

val rows = spark.sql("YOUR QUERY").show

有关连接到外部配置单元元存储的更多详细信息,请参见此处(databricks)

相关问题