我有以下模式:
root
|-- sents: array (nullable = false)
| |-- element: integer (containsNull = true)
|-- metadata: array (nullable = true)
| |-- element: map (containsNull = true)
| | |-- key: string
| | |-- value: string (valueContainsNull = true)
在表格中,它看起来像这样:
+----------+---------------------------------------------------------------------+
|sents |metadata |
+----------+---------------------------------------------------------------------+
|[1, -1, 0]|[[confidence -> 0.4991], [confidence -> 0.5378], [confidence -> 0.0]]|
+----------+---------------------------------------------------------------------+
如何从数组列中的Map列表中访问te值?
谢谢您
1条答案
按热度按时间dldeef671#
这里有两个选项使用spark中的分解和变换高阶函数。
选项1(explode+pyspark访问器)
首先我们
explode
数组的元素放入一个新列中,接下来我们使用键访问Mapmetadata
要检索值:选项2(变换+分解)
我们用这个
transform
将Map的值提取到一个新数组中,然后explode
信息技术: