gpt4 book ai didi

python - 排序 apache 光束 wordcount_minimal 输出

转载 作者:行者123 更新时间:2023-12-03 23:54:02 26 4
gpt4 key购买 nike

我正在处理 beams word count examples (在 python 中)。我能够在 DataflowRunner 上运行示例并接收输出。

输出文件目前看起来像:

itself: 16
grey: 1
senses: 4
repair: 1
me: 228

无论如何对 PCollection 进行排序,以便我的输出文件根据词频按降序排序?

在没有办法做到这一点的情况下,找到最常出现的单词的标准工作流程是什么?在beam将数据减少到字数之后,这是否会由一个单独的过程来处理?

最佳答案

在 Beam 中,PCollection 的元素是无序的。我将结果存储在数据库中并在那里执行排序。

不确定您的用例以及是否真的需要在 Beam 中进行排序,但一种解决方法是将所有行分组到一个虚构的键上,使用 GroupByKey,并对分组数据执行排序,如下所示:

word_count_list = [
('itself', 16),
('grey', 1),
('senses', 4),
('repair', 1),
('me', 228),
]

def addKey(row):
return (1, row)

def sortGroupedData(row):
(keyNumber, sortData) = row
sortData.sort(key=lambda x: x[1], reverse=True)
return sortData[0:3]

word_count = (p
| 'CreateWordCountColl' >> beam.Create(word_count_list)
| 'AddKey' >> beam.Map(addKey)
| 'GroupByKey' >> beam.GroupByKey()
| 'SortGroupedData' >> beam.Map(sortGroupedData)
| 'Write' >> WriteToText('./sorting_results')
)

这将返回单行列表中的前 3 个。
[('me', 228), ('itself', 16), ('senses', 4)]

但是,请考虑您会放弃数据集的并行处理。

关于python - 排序 apache 光束 wordcount_minimal 输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52397638/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com