gpt4 book ai didi

scala - 将匹配案例应用于 Spark 列?

转载 作者:行者123 更新时间:2023-12-02 00:51:03 25 4
gpt4 key购买 nike

我有一个 Spark 2.0.0 数据集,其中有一列 Foo 对象,例如 val ds: Dataset[(int, Foo, int)]BarFoo 的提取器。我希望能够添加一个使用 match-case 语句(或任何任意复杂的语句)构造的列。像这样:ds.withColumn("extracted", $"_2"match { case Bar(x) => x })。在 Spark 中实现此行为的最佳方式是什么?

更新:
@T.Gawęda 和@zero323 - 感谢你们的深思熟虑的评论。我认为我的答案在于这句话:“不可能通过 Column 进行模式匹配以提取数据。”我确实使用了 Dataset[Row],但我过度简化为 Dataset[(int, Foo, int)]。我倾向于使用 withColumn 而不是 map 的原因是 (1) 我试图避免引用任何其他列(他们没有考虑到比赛中-case 函数)和 (2) 我想按名称引用 Foo/Bar 列(因为该列在 Row 中的位置未知)。

最佳答案

如果你有静态类型的 Dataset 并且你想执行任意复杂的操作,为什么不简单地使用 map:

ds.map { case (first, Bar(x), last) => ??? }

withColumn 旨在对 DataFrames/Datasets[Row] 进行操作,并且不可能对 Column 进行模式匹配 提取数据。

Column 比其他任何东西都更像是一个将应用于特定数据集的函数。

关于scala - 将匹配案例应用于 Spark 列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39797653/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com