2015-06-25 2 views
0

Я новичок в Scala и Spark. Я работаю над искрообразованием с данными twitter. Я прикрепил поток в отдельные слова. Теперь мне нужно устранить твиты, которые начинаются с #, @, и слова, такие как RT, от потоковой передачи данных перед их обработкой. Я знал, что это очень легко сделать. Я написал фильтр для этого, но он не работает. Может ли кто-нибудь помочь в этом. Мой код:Spark Streaming - Twitter - Фильтрация данных твита

val sparkConf = new SparkConf().setMaster("local[2]") 
    val ssc = new StreamingContext(sparkConf, Seconds(2)) 
    val stream = TwitterUtils.createStream(ssc, None) 
    //val lanFilter = stream.filter(status => status.getLang == "en") 
    val RDD1 = stream.flatMap(status => status.getText.split(" ")) 
    val filterRDD = RDD1.filter(word =>(word !=word.startsWith("#"))) 
    filterRDD.print() 

Также на языке фильтр отображается ошибка.

спасибо.

+3

Возможно, вы можете показать нам код, который вы написали, чтобы мы могли помочь вам лучше? –

+0

Мой код такой: val sparkConf = new SparkConf(). SetMaster ("local [2]") val ssc = new StreamingContext (sparkConf, Seconds (2)) val stream = TwitterUtils.createStream (ssc, None) // val lanFilter = stream.filter (status => status.getLang == "en") val RDD1 = stream.flatMap (status => status.getText.split ("")) val filterRDD = RDD1.filter (word => (word! = word.startsWith ("#"))) – Naren

+0

Измените свой вопрос и добавьте код. Комментарии имеют ограниченную поддержку уценки. – Mark

ответ

0

Является ли ваше выражение лямбда правильным? Я думаю, что вы хотите:

val filterRDD = RDD1.filter(word => !word.startsWith("#"))

2

Вы можете использовать встроенную поддержку слова фильтра:

TwitterUtils.createStream(ssc, None, Array("filter", "these", "words")) 

Но если вы хотите, чтобы исправить код:

.filterNot(_.getText.startsWith("#")) 

Относно языка, см. это question.

+0

Спасибо .. но фильтр в TwitterUtils имеет дело с набором строк фильтра, чтобы получить только те твиты, которые соответствуют им. Мне нужно удалить стоп-слова, такие как: RT, is, has ... и т. Д. – Naren

+0

См. Обновленный ответ, вы можете использовать 'filterNot' для достижения этого. :) – bjfletcher

Смежные вопросы