在HD Insight集群中通过Livy运行scala应用程序时,我在我的应用程序中创建的sqlContext似乎没有考虑到hive Metastore。它抛出"表未找到"执行某些
时的异常sqlContext.sql("SELECT * FROM table LIMIT 1").collect.foreach(println)
然而,当在spark-shell中做同样的事情时,它工作正常。
我是否必须在某处指定某个属性?
我认为它可能是权限访问权限,因此我尝试使用proxyUser参数指定用户进行模拟,但它也没有考虑到。
这是我发给Livy的json:
{ "file":"wasb://container@storage.blob....", "className":"com.server.MyClass" }
以下是我创建sc和sqlContext变量的方法:
val conf = new SparkConf().setAppName("MyApp")
val sc = new SparkContext(conf)
val sqlContext = new org.apache.spark.sql.hive.HiveContext(sc)
答案 0 :(得分:0)
此问题有解决方法。转到Ambari并更改SPARK配置。
https://<cluster endpoint>/#/main/services/SPARK/configs
展开高级spark-env,将包含SPARK_DIST_CLASSPATH
的行更改为:
export SPARK_DIST_CLASSPATH=$SPARK_DIST_CLASSPATH:/usr/hdp/current/spark-client/lib/*:/usr/lib/hdinsight-datalake/*:/usr/hdp/current/spark-client/conf