【问题标题】:Spark python how group RDD items by using special mark? [duplicate]Spark python如何使用特殊标记对RDD项目进行分组? [复制]
【发布时间】:2016-07-12 03:26:36
【问题描述】:

我有一个大文件(a.txt),如下所示,其中文件中有一个特殊标记,将数据分组

a1
a2
$$$$$$$$
a1
c1
b1
c2
$$$$$$$$
d1
d2
$$$$$$$$
...

我想使用类似的python代码:

line = sc.textFile("a.txt")
line1 = line.filter() or line.filter.map()...
...

将组项目分成几个组,如下所示: (a1,a2), (a1, c1, b1,c2), (d1, d2)....但是不知道怎么做,有人可以帮忙吗?

【问题讨论】:

  • @zero323,我搜索了相关主题,找不到重复的问题。如果你找到了,请给我链接。谢谢。这个不是重复的!!
  • 您想根据特定的分隔符组合记录,对吗?这应该在阅读链接问题中解释的内容时完成。
  • a1, a2, $$$$$$$$ ... 不在一行中。链接的问题不同。
  • 是的,完全正确。这就是你不能使用 textFile 的原因。
  • @zero323,我找到了你提到的链接,我会仔细检查,谢谢!

标签: python dictionary apache-spark filter rdd


【解决方案1】:
import itertools
df = pd.read_clipboard(header=None)
mn = df[0].tolist()
def isplit(iterable,splitters):
    return [list(g) for k,g in itertools.groupby(iterable,lambda x:x in splitters) if not k]
isplit(mn, ('$$$$$$$$',))
Out[84]: [['a1', 'a2'], ['a1', 'c1', 'b1', 'c2'], ['d1', 'd2']]

【讨论】:

  • MaThMaX,感谢您的回复。 line是RDD格式的数据,你有好的答案吗?实际上文件 a.txt 是一个非常大的文件 >10G。我想得到与RDD格式数据和过滤器或其他功能相关的直接答案。
  • @Olafapple,我认为这已经是另一个问题了......我没有使用Spark 的经验。但是如果你想使用 pandas,你可以阅读How to work with BigData using Pandas
猜你喜欢
  • 2021-03-13
  • 1970-01-01
  • 2022-01-11
  • 2011-09-05
  • 2017-01-28
  • 1970-01-01
  • 2019-02-11
  • 1970-01-01
  • 2020-05-20
相关资源
最近更新 更多