当前位置: 首页 > 知识库问答 >
问题:

如何在Spark Stream中创建键值对数据流

楚弘益
2023-03-14

我对Spark流媒体还不熟悉。有一个项目使用Spark Streaming,输入是一个键值对字符串,比如“productid,price”。

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

在每个时间间隔内,我必须计算每个产品的总价格,比如

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

我目前的想法是,我必须执行以下步骤1)使用val lineMap=lines拆分整行。映射{x=

2)拆分每行,val记录Map=lineMap.map{x=

现在我困惑于如何使第一列作为键,第二列作为值,并使用减少键函数来获得总和。

请告知。

谢谢

共有1个答案

朱伯寅
2023-03-14

拆分每行后,可以执行以下操作:

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

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

 类似资料:
  • 问题内容: 在Python中,可以向1构造函数传递一系列键值对: 除了为此目的定义我自己的函数外,我想不出其他任何方法来在JavaScript中执行此类操作: 但是我是JS新手…这种对对对象转换是否内置任何内容? 1出于这个问题的目的,我将Python字典视为JS对象的Python副本,尽管当然相似性仅限于它们都是键值集合这一事实。 问题答案: 在撰写本文时(2013年),JavaScript对象

  • 根据给定的键值对创建一个对象。 使用 Array.reduce() 来创建和组合键值对。 const objectFromPairs = arr => arr.reduce((a, v) => ((a[v[0]] = v[1]), a), {}); objectFromPairs([['a', 1], ['b', 2]]); // {a: 1, b: 2}

  • 问题内容: 我有一个2D整数数组。我希望将它们放入HashMap中。但是我想从基于数组索引的HashMap访问元素。就像是: 对于A [2] [5],它返回与该键关联的值。但是,如何使用一对密钥创建一个hashMap?或者通常是多个键:以一种我可以使用get(key1,key2,… keyN)来访问元素的方式。 编辑:发布问题3年后,我想再添加一点 我遇到了另一种方法。 数组索引,和可被表示为一个

  • 问题内容: 我是JSON的新手。我正在尝试在Java(org.json.JSONObject(json.jar))中创建一个类似于(基本上是一组名称- 值对)的JSON字符串 谁能帮助我如何用Java创建它?我希望名称和值都在其中,以便我可以遍历集合,然后获得单个值。 问题答案: 该库是链接的,因此您可以通过首先创建一个json数组,然后创建单个对象并将它们一次添加到数组中来创建对象,如下所示:

  • 在此容器中只存在默认DB。 如何创建数据库?

  • 我有两个数组:和。 数组中的示例值:。 数组中的值示例:。 我需要创建一个JavaScript对象,将数组中的所有项放在同一个对象中。例如