创建SQLContext对象时,构造函数HiveContext(JavaSparkContext)是未定义的错误

时间:2017-09-01 14:32:16

标签: java apache-spark apache-spark-sql spark-hive

我尝试使用JavaSparkContext对象创建SQL上下文对象,因为它的参数如下:

SparkConf sparkConf=new SparkConf().setMaster("local").setAppName("Example");
JavaSparkContext sc=new JavaSparkContext(sparkConf);
SQLContext sqlctx=new HiveContext(sc);

Eclipse正在抛出错误说:

The constructor HiveContext(JavaSparkContext) is undefined

但我在互联网上查找的所有示例,包括文档都使用JavaSparkContext作为参数。我错过了什么吗?

Maven依赖项:

<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.11</artifactId>
<version>2.2.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-hive_2.10</artifactId>
<version>1.2.0</version>
<scope>provided</scope>
</dependency>

1 个答案:

答案 0 :(得分:1)

你不应该对spark_hive有Spark 2.2依赖吗?

<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.11</artifactId>
<version>2.2.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-hive_2.10</artifactId>
<version>2.2.0</version>
<scope>provided</scope>
</dependency>

如果您使用Spark 2.2,我不推荐使用HiveContext,您应该只使用SparkSession作为查询和计算的入口点:

  

从Spark SQL 1.6升级到2.0

     

SparkSession现在是新条目   Spark的重点是替换旧的SQLContext和HiveContext。注意   将旧的SQLContext和HiveContext保留为向后   兼容性。可以从SparkSession访问新的目录界面    - 数据库和表访问的现有API,例如listTables,createExternalTable,dropTempView,cacheTable都在这里移动。