Spark sql 在yarn-cluster模式下找不到表
Posted 骁枫
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spark sql 在yarn-cluster模式下找不到表相关的知识,希望对你有一定的参考价值。
在hive里建一个数据库test,在数据库里建了一张表user,然后在Spark程序中使用Spark sql读取这张表
"select * form test.user"
当部署模式是spark stand模式和yarn-client模式时,程序可以正常运行,但yarn-cluster模式就报了找不到“test.user”表的错误。
解决办法:
spark和hive整合,把hive-site.xml加到spark根目录的conf下,所以,要在提交Spark任务的时候,要把hive-site.xml加到--files
示例:spark版本是2.0.1
spark-submit --class cn.XXX.XX.XXX --master yarn --deploy-mode cluster --executor-memory 5g --num-executors 5 --files /data/hive-1.2.1/conf/hive-site.xml test.jar
参考:
http://blog.csdn.net/baiyangfu_love/article/details/40402743
在yarn-cluster模式下,原本在设置好的应用名就不生效,这个加--name参数解决:
spark-submit --class cn.XXX.XX.XXX --master yarn --deploy-mode cluster --executor-memory 5g --num-executors 5 --name test --files /data/hive-1.2.1/conf/hive-site.xml test.jar
导致这个问题的主要原因是,yarn-client和yarn-cluster模式在提交任务时setAppName的执行顺序不同导致,yarn-client中setAppName是在向yarn注册Application之前读取,yarn-cluser模式则是在向yarn注册Application之后读取,这就导致yarn-cluster模式设置的应用名不生效。
参考:http://support.hwclouds.com/usermanual-mrs/zh-cn_topic_0036027341.html
以上是关于Spark sql 在yarn-cluster模式下找不到表的主要内容,如果未能解决你的问题,请参考以下文章
Spark Yarn-cluster 与 Yarn-client
Spark Yarn-cluster与Yarn-client
Spark on yarn的两种模式 yarn-cluster 和 yarn-client
spark怎么以master yarn-cluster模式运行wordcount
spark-submit / spark-shell > yarn-client 和 yarn-cluster 模式的区别