为什么在spark-shell中导入SparkSession会因“对象SparkSession不是包org.apache.spark.sql的成员”而失败?

时间:2017-06-27 04:44:30

标签: apache-spark cloudera-cdh apache-spark-1.6

我在我的VM,Cloudera机器上使用Spark 1.6.0。

我正在尝试从Spark shell向Hive表中输入一些数据。 为此,我尝试使用SparkSession。但是下面的导入无效。

scala> import org.apache.spark.sql.SparkSession
<console>:33: error: object SparkSession is not a member of package org.apache.spark.sql
         import org.apache.spark.sql.SparkSession

没有它,我不能执行这个陈述:

val spark = SparkSession.builder.master("local[2]").enableHiveSupport().config("hive.exec.dynamic.partition","true").config("hive.exec.dynamic.partition.mode", "nonstrict").config("spark.sql.warehouse.dir", warehouseLocation).config("hive.metastore.warehouse.dir","/user/hive/warehouse").getOrCreate()
<console>:33: error: not found: value SparkSession
         val spark = SparkSession.builder.master("local[2]").enableHiveSupport().config("hive.exec.dynamic.partition","true").config("hive.exec.dynamic.partition.mode", "nonstrict").config("spark.sql.warehouse.dir", warehouseLocation).config("hive.metastore.warehouse.dir","/user/hive/warehouse").getOrCreate()

有谁能告诉我我在这里犯了什么错误?

1 个答案:

答案 0 :(得分:4)

SparkSession is available as of Spark 2.0所以您应该使用SQLContext代替(或将Spark升级到最新且最好的2.1.1)。

引用Spark 1.6.0的Starting Point: SQLContext

  

Spark SQL中所有功能的入口点是SQLContext类,或其后代之一。

     

除了基本的SQLContext之外,您还可以创建一个HiveContext,它提供了基本SQLContext提供的功能的超集。