如何映射每一行以获得多行输出rdd

时间:2015-11-05 07:13:30

标签: python scala pyspark

给定输入rdd或表格

1: 6 7
2: 5

我怎样才能获得另一张表格

1 6
1 7
2 5

依旧......

2 个答案:

答案 0 :(得分:1)

我不清楚RDD的工作方式,但你说它可以变成dict。所以,让我们说,你有以下词典:

d = {1: [6, 7], 2: [5]}

让我们说你想把这些信息写入文件:

1 6
1 7
2 5

这可以通过以下方式实现:

with open('path/to/output', 'w') as outfile:
    for k in sorted(d):
        for v in d[k]:
            outfile.write("{}\t{}\n".format(k, v))

答案 1 :(得分:1)

如果我假设您的初始输入位于文本文件中,那么您可以调用两个这样的地图函数:

data = sc.textFile("textfile_location")
data = data.map(lambda line: (line.split(":")[0], line.split(":")[1].split()))
data = data.flatMap(lambda key, values: [(key, value) for value in values])