为什么在应用程序中使用 SQLContext 对 Hive table 执行 SQL 失败(但 spark-shell 中的相同查询工作正常)?

Why does executing SQL against Hive table using SQLContext in application fail (but the same query in spark-shell works fine)?

我正在使用 Spark 1.6

我正在尝试通过 :

连接到我的 spark-sql java 代码中的 table
JavaSparkContext js = new JavaSparkContext();
SQLContext sc = new SQLContext(js); 

DataFrame mainFile = sc.sql("Select * from db.table");

它给了我一个 table 未找到异常。

但是当我在 spark-shell 中使用 scala 执行此操作时,它有效 fine.The table 被访问并且我也可以打印出数据。

对此问题有任何意见吗?

Spark-shell 提供 HiveContext。如果您想在 Java 代码中使用 HiveContext,请在您的应用程序中添加它的依赖项,然后在 java 程序中使用。请参考http://spark.apache.org/docs/1.6.2/sql-programming-guide.html#hive-tables

<dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-hive_2.10</artifactId>
        <version>1.6.2</version>
</dependency>