【问题标题】:How to remove/filter element from WrappedArray column [duplicate]如何从 WrappedArray 列中删除/过滤元素[重复]
【发布时间】:2018-09-07 23:32:10
【问题描述】:

我在处理 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])

我想用type == A 删除WrappedArray 中的任何元素。所需的输出如下:

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,但任何语言都可以。任何帮助/建议都会很好!

【问题讨论】:

  • 只是阅读它。如果我理解正确,如果位置不固定,该解决方案似乎不起作用?
  • 是的,这个问题有点不同。为此,我可能能够使用UDF 为您提供一个 Scala 解决方案,但不太确定它会有多大帮助。您能否将您尝试过的UDF 添加到问题中?

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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-03
    • 2015-01-05
    • 2012-05-09
    • 2020-10-24
    • 1970-01-01
    • 1970-01-01
    • 2018-01-01
    • 1970-01-01
    相关资源
    最近更新 更多