1

我有一个看起来像这样的 Spark.SQL.Row:

my_row = Row(id = 1,
    value = [Row(id = 1, value = "value1"), Row(id = 2, value = "value2")])

我想使用以下方法从每个嵌套行中获取值:

[x.value for x in my_row.value]

问题是当我迭代时,整行都被转换成元组,

my_row = (1, [(1, "value1"), (2, "value2")])

我失去了架构。有没有办法迭代和保留行列表的模式?

4

1 回答 1

2

准确地说pyspark.sql.row实际上是一个tuple

isinstance(my_row, tuple)
# True

由于 Python 元组是不可变的,我看到的唯一选择是Row从头开始重建:

d = my_row.asDict()
d["value"] = [Row(value=x.value) for x in  my_row.value]
Row(**d)

## Row(id=1, value=[Row(value='value1'), Row(value='value2')])
于 2015-11-25T06:29:08.933 回答