【问题标题】:How to create key-value pairs DStream in Spark Streaming如何在 Spark Streaming 中创建键值对 DStream
【发布时间】:2015-11-03 04:35:14
【问题描述】:

我是 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 函数来获取总和。

请指教。

谢谢

【问题讨论】:

    标签: scala apache-spark spark-streaming


    【解决方案1】:

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

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

    通过这种方式,您可以获得一个DStream[(String, String)],您可以在其上应用reduceByKey 之类的对转换(不要忘记导入所需的隐式)。

    【讨论】:

      猜你喜欢
      • 2016-10-07
      • 2020-06-03
      • 1970-01-01
      • 1970-01-01
      • 2016-06-12
      • 2017-09-03
      • 2018-07-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多