Spark SQLContext找不到配置单元表

时间:2017-04-13 13:22:03

标签: java hadoop apache-spark

我试图通过简单的Spark Job(用Java编写)查询Hive表。

SparkConf conf = new SparkConf().setMaster("local[*]").setAppName("MyJob");

JavaSparkContext sc = new JavaSparkContext(conf);
SQLContext sqlContext = new org.apache.spark.sql.SQLContext(sc);

DataFrame df = sqlContext.table("scf");

但是当我通过 spark-submit 提交jar时,我有以下错误:

Exception in thread "main" org.apache.spark.sql.catalyst.analysis.NoSuchTableException
    at org.apache.spark.sql.catalyst.analysis.SimpleCatalog.lookupRelation(Catalog.scala:108)
    at org.apache.spark.sql.SQLContext.table(SQLContext.scala:831)
    at org.apache.spark.sql.SQLContext.table(SQLContext.scala:827)
    at MyJob.myJob(MyJob.java:30)
    at MyJob.main(MyJob.java:65)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.apache.spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:729)
    at org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:181)
    at org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:206)
    at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:121)
    at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)

我确定表存在。如果我在spark-shell中运行 sqlContext.table(“scf”)。count ,它会给我结果。

可能是什么问题?

谢谢!

2 个答案:

答案 0 :(得分:2)

SQLContex不支持Hive。您必须使用HiveContext或SparkSession并启用Hive支持。

import org.apache.spark.sql.hive.HiveContext

val sqlContext = new HiveContext(sc)

答案 1 :(得分:2)

我有类似的问题。原来火花提交无法找到"正确(或任何,我假设)Hive环境。我将我的hive-site.xml添加到"文件"我的火花提交的参数,它工作。

离。 火花提交    - 主纱   --deploy-mode cluster    - 类   --files   ...