如何在Spark Streaming中创建键值对DStream

时间:2015-08-11 04:55:07

标签: scala apache-spark spark-streaming

我是Spark Streaming的新手。有一个使用Spark Streaming的项目,输入是一个键值对字符串,如“productid,price”。

要求是将每一行作为一个单独的事务处理,并每隔1秒触发一次RDD。

在每个区间,我必须计算每个产品的总价格,例如

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 个答案:

答案 0 :(得分:1)

分割完每行后,您可以执行以下操作:

FOREIGN KEY DELETE CASCADE

通过这种方式,您可以获得rowItems.map { case Seq(product, price) => product -> price } ,您可以在其中应用DStream[(String, String)]对变换(不要忘记导入所需的隐含)。