1

我有一个加入后由 Spark 生成的元组。它有一个键,一个元组中的两列,然后是第二个表中的其余列。我不一定知道第二个表中有多少列。

因此,例如:

(2324234534, (('23213','2013/03/02'), 12.32, 32.4, 45))

如果 zip 后有一列,我已经能够分离元组,日期元组在 PySpark 中是这样的:

x.map(lambda p: (p[0], (p[1][0][0], p[1][0][1], p[1][1])))

在 Python 中:

map(lambda p: (p[0], (p[1][0][0], p[1][0][1], p[1][1])), x)

这会产生我正在寻找的输出:

(2324234534, ('23213','2013/03/02', 12.32))

如果我在 zip, date 之后想要多列,那么我有这个代码:

x.map(lambda p: (p[0], (p[1][0][0], p[1][0][1], p[1][1:])))

但是,它会产生以下输出:

(2324234534, ('23213','2013/03/02', (12.32, 32.4, 45)))

无论哪种方式,我当前的方法都是 hacky 并且不会产生我正在寻找的结果。也许我有兴趣学习如何扁平化元组(我在这个主题上找到的其他线程将元组变成列表,这不是我正在寻找的 100%)

4

1 回答 1

1

如果我正确理解您的目标,我相信这可以满足您的要求:

In [11]: a = (2324234534, (('23213','2013/03/02'), 12.32, 32.4, 45))

In [12]: a[:1] + (a[1][0] + a[1][1:],)
Out[12]: (2324234534, ('23213', '2013/03/02', 12.32, 32.4, 45))
于 2015-02-18T23:00:36.257 回答