You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spark RDD映射问题:如何生成单词与对应行号的关联表

问题

我的RDD数据格式如下:

['101 We no longer have to go to a store during limited hours , stalk the aisles looking for a product , and then wait in check-out lines','102 Now with the click of a button, we have the freedom to shop for anything , anywhere , and at any time . ','103 Every day is Christmas if you buy yourself stuff online .']

我希望生成关联表,键为字符串中的每个单词,值为对应字符串的编号(如101、102),最终得到类似[(We,101),(no,101),...,(Now,102),...]的结果。

我尝试了以下代码:

associateRDD = rdd.map(lambda line:(line.split(" "),line.split(" ")[0]))

得到的结果是[(['We','no',...],'101'),(['Now',...],'102'),...],不知道如何拆分列表生成每个单词对应编号的元组,请求帮助。

解决方案

直接用flatMap替代你代码里的map就行——map是每条输入对应一个输出,而flatMap能把一条输入拆成多个输出并展开成单个元素的RDD。具体代码如下:

associateRDD = rdd.flatMap(lambda line: [(word, line.split(" ")[0]) for word in line.split(" ")[1:]])

代码逻辑:

  • 先通过line.split(" ")[0]提取当前行的编号(比如101、102)
  • 用line.split(" ")[1:]拿到这一行里除了编号以外的所有单词
  • 用列表推导式把每个单词和编号拼成元组,再靠flatMap把这些元组逐个展开成RDD的元素

这样跑出来的结果就是你要的[(We,101),(no,101),...,(Now,102),...]格式了。

内容的提问来源于stack exchange,提问作者anny777

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 14:35:16