我是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 函数来获得总和。
请告知。
由于
答案 0 :(得分:1)
分割完每行后,您可以执行以下操作:
FOREIGN KEY DELETE CASCADE
通过这种方式,您可以获得rowItems.map { case Seq(product, price) => product -> price }
,您可以在其中应用DStream[(String, String)]
对变换(不要忘记导入所需的隐含)。