如何从WrappedArray列中删除/过滤元素

时间:2018-03-29 05:37:45

标签: apache-spark apache-spark-sql apache-spark-dataset

我遇到了操纵WrappedArray列的问题。我想从Spark数据集中的WrappedArray列中删除/过滤元素。 WrappedArray包含对象,例如,我有一个数据集包含以下列:

ColA
-----
WrappedArray([id:111, type:A],[id:222,type:B])
WrappedArray([id:333, type:A],[id:444,type:C])
WrappedArray([id:555, type:B],[id:666,type:C])

我想删除WrappedArraytype == A内的所有元素。所需的输出如下:

ColA
-----
WrappedArray([id:222,type:B])
WrappedArray([id:444,type:C])
WrappedArray([id:555, type:B],[id:666,type:C])

我在考虑使用UDFwithColumn,我可以看到WrappedArray API具有filter功能,但无法正确使用语法

使用Java,但任何语言都可以。任何帮助/建议都会很好!

1 个答案:

答案 0 :(得分:0)

使用爆炸解决, 基本思想是爆炸到元素级别,并过滤掉colA.type = A

的位置