java - Spark SQLContext 找不到 Hive 表

标签 java hadoop apache-spark

我尝试通过一个简单的 Spark 作业(用 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 ,它会给我结果。

可能是什么问题?

谢谢!

最佳答案

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

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

val sqlContext = new HiveContext(sc)

关于java - Spark SQLContext 找不到 Hive 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43393503/

相关文章:

java - 如何在jsp中显示表格中的值?

java - 从终端输入中转义反斜杠

java - 如何检查文件内容是否为空

scala - 使用 mvn 构建 Spark 失败

arrays - 如何访问数据框列中的数组元素(标量)

在获得文件锁定之前,Java5 FileInputStream 失败

Java 神谕搜索

hadoop - 具有数据挖掘功能的 MapReduce 项目

python - Mapreduce无法按值排序[python]

apache-spark - Spark Streaming : Could not compute split, block 未找到