2017-09-01 116 views
0

我试图创建使用JavaSparkContext对象SQL上下文对象,因为它就像参数:构造HiveContext(JavaSparkContext)是未定义的错误而创建SQLContext对象

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

你不应该有星火2.2依赖于spark_hive?

<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> 

而且如果你用星火2.2,HiveContext已过时,我认为,你应该只使用SparkSession为切入点进行查询和计算:

从星火SQL升级1.6至2.0

SparkSession现在是Spark的新条目 ,取代旧的SQLContext和HiveContext。注意 表示旧的SQLContext和HiveContext保留后向 的兼容性。可以从SparkSession访问新的目录接口 - 数据库和表访问上的现有API(如listTables,createExternalTable,dropTempView,cacheTable)将移至此处。

相关问题