2016-11-16 61 views
5

Kafka sunucusundan satır okuyan, ancak başka bir yerel dosyada yazılmış kuralları kullanarak işleyen bir Sparkstreaming kodu oluşturmaya çalışıyorum. Sadece edebilir vb yerel dosyalarıCan SparkContext ve StreamingContext aynı programda bulunabilir mi?

val sparkConf = new SparkConf().setMaster("local[*]").setAppName("ReadLine") 
val ssc = new StreamingContext(sparkConf, Seconds(15)) 
ssc.checkpoint("checkpoint") 

    val topicMap = topics.split(",").map((_, numThreads.toInt)).toMap 
    val lines = KafkaUtils.createStream(ssc, zkQuorum, group, topicMap).map(_._2) 
    val sentence = lines.toString 

    val conf = new SparkConf().setAppName("Bi Gram").setMaster("local[2]") 
    val sc = new SparkContext(conf) 
    val stringRDD = sc.parallelize(Array(sentence)) 

okuma gibi dize manipülasyon Ama bu şu hatayı

Exception in thread "main" org.apache.spark.SparkException: Only one SparkContext may be running in this JVM (see SPARK-2243). To ignore this error, set spark.driver.allowMultipleContexts = true. The currently running SparkContext was created at: 
org.apache.spark.SparkContext.<init>(SparkContext.scala:82) 
org.apache.spark.streaming.StreamingContext$.createNewSparkContext(StreamingContext.scala:874) 
org.apache.spark.streaming.StreamingContext.<init>(StreamingContext.scala:81) 

cevap

11

Bir uygulamayı atar - Başka uygulayarak tüm diğer kıvılcım özellikler için akış verileri ve sparkContext için StreamingContext oluşturma ONE SparkContext var. StreamingContext, SparkContext adresinde yaratılmıştır. Sadece aşağıdaki kurucu kullanılıyorsa SparkContext

val sc = new SparkContext(conf) 
val ssc = new StreamingContext(sc, Seconds(15)) 

kullanarak ssc StreamingContext oluşturmanız gerekir.

StreamingContext(conf: SparkConf, batchDuration: Duration) 

O içten oluşturmak SparkContext

ssc.sparkContext 
tarafından StreamingContext alabilirsiniz SparkContext

this(StreamingContext.createNewSparkContext(conf), null, batchDuration) 

başka