在Spark On Hive使用SparkSQL读取hive表中的数据,local和client模式下测试都可以通过,但在yarn的cluster模式下测试抛出了如下异常:
org.apache.spark.sql.catalyst.analysis.NoSuchDatabaseException: Database ‘test’ not found;
最后找出原因:把spark的任务jar放到yarn集群上面运行时,执行job的节点可能不是Hive所在的节点。则会找不到Hive的配置文件,造成找不到数据库错误。
所以要用 --files 把hive-site.xml广播到各个节点
spark-submit --master yarn --deploy-mode cluster --files …/hive-site.xml --…