我有一个专栏叫 requests
它是arraytype,里面有几个字段 code
, value
等
StructField(requests,ArrayType(StructType(StructField(code,IntegerType,true), StructField(value,DoubleType,true) .....)
比如说 [[1, 5.0....], [2, 0, ....]]
等。
我如何收集 code
数组中的字段 [1,2....]
? 我对其他领域不感兴趣 requests
.
我试过用 array_zip
但这没用:
val result = df.withColumn("new_col", arrays_zip(col("requests.code")))
我一定要用吗 explode
? 或者这是可能的使用高阶函数?提前谢谢!
2条答案
按热度按时间tuwxkamq1#
你得到一个数组
code
通过访问requests
数组:或者使用列方法
getItem
,getField
:例子:
7gs2gvoe2#
可以使用高阶函数
transform
对于Spark>=2.4:如果spark>=3.0,还可以使用scalaDataframeapi
transform
: