我收到错误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但同样的错误。
答案 0 :(得分:0)
没有为getOrCreate
和SparkContext
定义SQLContext
函数。
getOrCreate
实例定义了 SparkSession
函数,从中创建了SparkSession
个实例。我们从使用sparkContext
方法调用创建的sqlContext
实例获取SparkSession
个实例或getOrCreate
个实例。
我希望解释清楚。
<强>更新强>
我上面的解释适用于更高版本的火花。在OP正在引用的the blog中,作者正在使用spark 1.6和the api doc of 1.6.3明确说明
获取单例SQLContext(如果存在)或使用给定的SparkContext创建新的