我正在使用带有数据帧的pyspark,并希望创建一个嵌套结构,如下所示
之前:
Column 1 | Column 2 | Column 3
--------------------------------
A | B | 1
A | B | 2
A | C | 1
后:
Column 1 | Column 4
--------------------------------
A | [B : [1,2]]
A | [C : [1]]
这可行吗?
2 回答
我不认为你可以得到那个确切的输出,但你可以接近 . 问题是列4的键名 . 在Spark中,结构需要预先知道一组固定的列 . 但是,让我们留待以后,首先,聚合:
这几乎是你想要的,对吧?问题是,如果您事先不知道您的密钥名称(即第2列中的值),Spark无法确定您的数据结构 . 另外,我不完全确定如何使用列的值作为结构的键,除非您使用UDF(可能带有
PIVOT
?):这当然具有以下缺点:键的数量必须是离散的并且事先已知,否则将默默地忽略其他键值 .
首先,您可以重现数据帧的示例 .
现在,列表不会存储为键值对 . 在column2上执行groupby之后,您可以使用
dictionary
或简单collect_list()
.