Spark python如何使用特殊标记对RDD项目进行分组? [复制]

Posted

技术标签:

【中文标题】Spark python如何使用特殊标记对RDD项目进行分组? [复制]【英文标题】:Spark python how group RDD items by using special mark? [duplicate] 【发布时间】: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,我找到了你提到的链接,我会仔细检查,谢谢! 【参考方案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。

以上是关于Spark python如何使用特殊标记对RDD项目进行分组? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

使用 Python 计算 Spark 中成对 (K,V) RDD 中每个 KEY 的平均值

从 spark RDD 中删除空字符串

如何获得 Spark RDD 的 SQL row_number 等效项?

如何在 Spark Scala 中的 Schema RDD [从案例类中创建] 中查找重复项以及相应的重复计数?

将rdd转换为数据框时,pyspark对mapPartitions使用一项任务

通过一系列破坏行为加深对spark RDD 的理解(或者是猜测)(python 版)