假设我有一个包含两列的Spark`s DataFrame,如下所示:
A | B
--+--
a | 1
a | 2
a | 3
b | 1
b | 4
c | 2
我想通过列A
上的唯一值过滤此数据帧来创建另一个数据帧。目前,我正在收集值并添加到列表中,如下所示:
As = [x.A for x in df.select("A").distinct().collect()]
会产生:As: ['a', 'b', 'c']
并过滤原始数据框,如下所示:
for a in As:
filtered_df = df.filter(df.A == a)
所以,在第一次迭代时,我会有一个像这样的新数据框:
A | B
--+--
a | 1
a | 2
a | 3
在第二次迭代中,如下所示:
A | B
--+--
b | 1
b | 4
等等。
由于这会触发collect()
,我试图以某种方式思考这不需要。
这可能吗?如果是这样,怎么样?