我有一个包含结构数组的列。看起来是这样的:
|-- Network: array (nullable = true)
| |-- element: struct (containsNull = true)
| | |-- Code: string (nullable = true)
| | |-- Signal: string (nullable = true)
这只是一个小示例,结构中的列比这个多得多。有没有一种方法可以将每一行的列中的数组连接起来,并使它们成为一个字符串?例如,我们可以有这样的东西:
[["example", 2], ["example2", 3]]
有没有一种方法可以:
"example2example3"?
2条答案
按热度按时间jhkqcmku1#
假设有一个Dataframe
df
使用以下模式:df
样本数据:您需要首先分解网络数组以选择结构元素代码和信号。
然后需要使用concat()函数将两列连接起来,然后将输出传递给collect\u list()函数,该函数将所有行聚合为一行array
最后,您需要将concat转换成所需的格式,这可以使用concat\u ws()函数来完成,该函数有两个参数,第一个参数是放置在两个字符串之间的分隔符,第二个参数是一个带有array类型的列,这是我们上一步的输出。根据您的用例,我们不需要在两个串联字符串之间放置任何分隔符,因此我们将分隔符参数保留为空引号。
以上所有步骤都可以在一行中完成
如果要将输出直接输入字符串变量,请使用:
zpqajqem2#
有一个名为spark hats(github,小文章)的库,您可能会发现它在这些情况下非常有用。
使用它,您可以很容易地Map数组,并在元素旁边输出连接,如果您提供完全限定的名称,甚至可以在其他地方输出连接。
设置
你要找的命令
输出