2014-10-31 2 views
4

У меня есть JavaDStream, который получает данные из внешнего источника. Я пытаюсь интегрировать Spark Streaming и SparkSQL. Известно, что JavaDStream состоит из JavaRDD. И я могу применить функцию applySchema(), когда у меня есть JavaRDD. Пожалуйста, помогите мне преобразовать его в JavaRDD. Я знаю, что есть функции в scala, и это намного проще. Но помогите мне на Java.Преобразование JavaDStream <String> в JavaRDD <String>

ответ

5

Вы не можете преобразовать DStream в RDD. Как вы упомянули, DStream содержит RDD. Способ получить доступ к RDD - это применить функцию к каждому RDD DStream с помощью foreachRDD. Смотрите документацию: https://spark.apache.org/docs/1.1.0/api/java/org/apache/spark/streaming/api/java/JavaDStreamLike.html#foreachRDD(org.apache.spark.api.java.function.Function2)

+0

Спасибо. Помог мне тонну! –

0

Вы должны сначала получить доступ ко всем РДУ внутри DStream, используя forEachRDD как:

javaDStream.foreachRDD(rdd => { 
    rdd.collect.foreach({ 
     ... 
    }) 
}) 
Смежные вопросы