我将 Python 脚本作为 Hadoop 流式作业运行,但这篇文章更多地与一些核心 Python 概念相关,而不是关于 Hadoop 的知识。
基本上我有一组线我想找到重叠
$ cat sample.txt
ID1 2143,2154,
ID2 2913,14545
ID3 2143,2390,3350,5239,6250
ID4 2143,2154,2163,3340
ID5 2143,2154,2156,2163,3340,3711
我想最后找到重叠的记录对并计算它们,例如这里是这样的:
2143,2154 3
2143,2163 2
2143,3340 2
2154,2163 2
2154,3340 2
2163,3340 2
我这样做的方法是创建一个用 Python 编写的 Hadoop 流作业,其中映射器基本上会输出给定行上的所有对组合,这些组合将由化简器进一步处理。
我的问题实际上很简单:如何在 Python 中有效地生成给定行中所有对的组合?请注意,在我的情况下,一对 (x,y) 与一对 (y,x) 相同。例如,ID3
我想在我的映射器中生成以下列表:
[(2143,2390), (2143,2390), (2143,3350), (2143,5239), (2143,6250), (2390,3350), (2390,5239), (2390,6250), (3350,5239), (3350,6250), (5239,6250)]
我当然可以用一堆 for 循环来做到这一点,但这很丑陋。我试过使用 itertools 但无法正确地从中得到一些东西。有什么想法吗?