SQLContext.gerorCreate不是值

时间:2018-02-24 23:54:26

标签: scala apache-spark apache-spark-sql spark-streaming

我收到错误SQLContext.gerorCreate不是object org.apache.spark.SQLContext的值。这是我的代码

import org.apache.spark.SparkConf
import org.apache.spark.streaming.StreamingContext
import org.apache.spark.streaming.Seconds
import org.apache.spark.streaming.kafka.KafkaUtils
import org.apache.spark.sql.functions
import org.apache.spark.sql.SQLContext
import org.apache.spark.sql.types
import org.apache.spark.SparkContext
import java.io.Serializable
case class Sensor(id:String,date:String,temp:String,press:String)
object consum {
 def main(args: Array[String]) {
  val sparkConf = new SparkConf().setAppName("KafkaWordCount").setMaster("local[2]")
val ssc = new StreamingContext(sparkConf, Seconds(2))
val sc=new SparkContext(sparkConf) 
val lines = KafkaUtils.createStream(ssc, "localhost:2181", "spark-streaming-consumer-group", Map("hello" -> 5))


def parseSensor(str:String): Sensor={
    val p=str.split(",")
    Sensor(p(0),p(1),p(2),p(3))
  }
val data=lines.map(_._2).map(parseSensor)
val sqlcontext=new SQLContext(sc)

import sqlcontext.implicits._
data.foreachRDD { rdd=>



val sensedata=sqlcontext.getOrCreate(rdd.sparkContext) 
}

我也尝试过使用SQLContext.getOrCreate但同样的错误。

1 个答案:

答案 0 :(得分:0)

没有为getOrCreateSparkContext 定义SQLContext函数。

getOrCreate 实例定义了

SparkSession函数,从中创建了SparkSession个实例。我们从使用sparkContext方法调用创建的sqlContext实例获取SparkSession个实例或getOrCreate个实例。

我希望解释清楚。

<强>更新

我上面的解释适用于更高版本的火花。在OP正在引用的the blog中,作者正在使用spark 1.6和the api doc of 1.6.3明确说明

  
    

获取单例SQLContext(如果存在)或使用给定的SparkContext创建新的