2015-08-11 2 views
1

Я новичок в Spark Streaming. Существует проект, использующий Spark Streaming, входной сигнал представляет собой пару пары значений ключа, например «productid, price».Как создать пары ключ-значение DStream в Spark Streaming

Требование состоит в том, чтобы обрабатывать каждую строку как отдельную транзакцию и запускать RDD каждые 1 секунду.

В каждом интервале я должен рассчитать общую стоимость для каждого отдельного продукта, как

select productid, sum(price) from T group by productid 

Моя текущая мысль, что я должен сделать следующие шаги 1) разделить всю линию с \ n val lineMap = lines.map {x => x.split ("\ n")}

2) разделите каждую строку на "," val recordMap = lineMap.map {x => x.map {y => y.split (",")}}

Теперь я смущен о том, как сделать первый столбец как ключ и второй столбец как значение, а также использовать reduceByKey функцию, чтобы получить общую сумму.

Просьба сообщить.

Благодаря

ответ

1

После того, как вы разделили каждую строку, вы можете сделать что-то вроде этого:

rowItems.map { case Seq(product, price) => product -> price } 

Таким образом, вы получаете DStream[(String, String)], на котором вы можете применить пару преобразований как reduceByKey (не забудьте для импорта необходимых имплицитов).

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