如何从键值对列表创建Spark Row

时间:2017-10-01 10:57:39

标签: python apache-spark pyspark

假设我有一个键值对列表:

kvs = [('x', 0), ('a', 1)]

现在,我想从Row创建一个Spark kvs,其密钥顺序与kvs相同。
如何在Python

中执行此操作

2 个答案:

答案 0 :(得分:1)

我还没有运行它,但如果失败,我可以在运行后检查一下。

from pyspark.sql import Row
kvs = [('x', 0), ('a', 1)]
h = {}
[h.update({k:v}) for k,v in kvs]
row = Row(**h)

答案 1 :(得分:1)

你可以:

from pyspark.sql import Row

Row(*[k for k, _ in kvs])(*[v for _, v in kvs])

但在我看来,最好避免Row。除了作为表示从JVM后端获取的本地值的方便类之外,它在Spark中没有特殊含义。在几乎所有情况下:

tuple(v for _, v in kvs)

完全有效替代Row