通过 Livy 发送到 HDInsight 的 Scala 作业看不到 Metastore

Scala jobs sent via Livy to HDInsight can't see metastore

当在 HD Insight 集群中通过 Livy 运行 scala 应用程序时,我在我的应用程序中创建的 sqlContext 似乎没有考虑到 hive metastore。它在执行某些

时抛出 "table not found" 异常
sqlContext.sql("SELECT * FROM table LIMIT 1").collect.foreach(println)

然而,当在 spark-shell 中做同样的事情时,它工作正常。

我必须在某处指定一些 属性 吗?

我认为这可能是权限访问,所以我尝试使用 proxyUser 参数指定要模拟的用户,但两者都没有考虑。

这是我发给李维的 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)

此问题有解决方法。转到 Ambari 并更改 SPARK 配置。 https://<cluster endpoint>/#/main/services/SPARK/configs

展开 Advanced 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