在hdp中启动一个定制版本的spark-on-yarn可以很好地完成来自的教程https://georgheiler.com/2019/05/01/headless-spark-on-yarn/ i、 e.以下内容:
# download a current headless version of spark
export SPARK_DIST_CLASSPATH=$(hadoop classpath)
export HADOOP_CONF_DIR=/usr/hdp/current/spark2-client/conf
export SPARK_HOME=<<path/to>>/spark-2.4.3-bin-without-hadoop/
<<path/to>>/spark-2.4.3-bin-without-hadoop/bin/spark-shell --master yarn --deploy-mode client --queue <<my_queue>> --conf spark.driver.extraJavaOptions='-Dhdp.version=2.6.<<version>>' --conf spark.yarn.am.extraJavaOptions='-Dhdp.version=2.6.<<version>>'
Welcome to
____ __
/ __/__ ___ _____/ /__
_\ \/ _ \/ _ `/ __/ '_/
/___/ .__/\_,_/_/ /_/\_\ version 2.4.3
/_/
但是,a:
spark.sql("show databases").show
仅返回:
+------------+
|databaseName|
+------------+
| default|
+------------+
现在尝试传递原始的hdp配置(我的自定义版本spark显然没有读入该配置),如下所示:
一:
--files /usr/hdp/current/spark2-client/conf/hive-site.xml
二:
--conf spark.hive.metastore.uris='thrift://master001.my.corp.com:9083,thrift://master002.my.corp.com:9083,thrift://master003.my.corp.com:9083' --conf spark.hive.metastore.sasl.enabled='true' --conf hive.metastore.uris='thrift://master001.my.corp.com:9083,thrift://master002.my.corp.com:9083,thrift://master003.my.corp.com:9083' --conf hive.metastore.sasl.enabled='true'
三:
--conf spark.yarn.dist.files='/usr/hdp/current/spark2-client/conf/hive-site.xml'
四:
--conf spark.sql.warehouse.dir='/apps/hive/warehouse'
所有这些都无助于解决问题。如何让spark识别Hive数据库?
2条答案
按热度按时间qjp7pelc1#
你可以复制
hive-site.xml
位于/usr/hdp/hdp.version/hive/conf或/opt/hdp/hdp.version/hive/conf中,具体取决于hdp的安装位置conf
无头Spark安装目录。现在,当您重新启动sparkshell时,它应该选择这个配置单元配置并加载apache配置单元中存在的所有模式w8biq8rn2#
配置单元jar必须位于spark的类路径中,才能启用配置单元支持。如果配置单元jar不在类路径中,则使用目录实现
in-memory
在sparkshell中,我们可以通过执行这将给
in-memory
###为什么需要Hive课程sparksession.scala公司
如果类不存在,则不启用配置单元支持。链接到在sparkshell初始化过程中执行上述检查的代码。
在上面作为问题的一部分粘贴的代码中,
SPARK_DIST_CLASSPATH
只使用hadoop类路径填充,缺少到配置单元jar的路径。