【问题标题】:Explode Spark Dataframe column containing JSON展开包含 JSON 的 Spark Dataframe 列
【发布时间】:2023-03-13 15:14:01
【问题描述】:

我在包含 JSON 对象的数据框中有一列。对于我的数据框中的每一行,我想提取 JSON,解析它并提取某些字段。提取后,我想将字段作为新的列元素附加到行中。

我查看了 DataFrame 上可用的 explode() 方法以及 foreach()flatMap()map(),但无法辨别哪种方法更适合此类处理。

【问题讨论】:

    标签: java apache-spark apache-spark-sql spark-dataframe


    【解决方案1】:

    地图可能是您需要的。使用它,您可以解析 json,选择所需的字段,然后返回包含这些附加列的新行。

    通常,map 用于 1:1 的用户定义函数(例如,每个输入行对应 1 个输出行)。 Flatmap 用于用户定义的 1:n 函数(其中每一行可以返回任意数量的行)

    【讨论】:

    • 大卫,感谢您的提示。即使 map 是 1:1,它是否期望行长保持一致?
    • 输出行不需要与输入行长度相同。但是对于数据框,所有行必须具有相同的字段(因此所有输出行必须具有相同的结构/相同的长度)
    • map 不先将其转换为RDD 吗?您只需使用withColumnUDF 即可跳过转换。
    • 这听起来像 Java —— 我不太了解 Java。我使用 Scala。
    • 我是 pyspark 用户,但这听起来不对。您应该只需要创建传递给 map 的函数。这是一个需要 1 行并输出 1 行的函数。同样,不是 java spark 用户。但是请检查此问题中的代码是否有助于为您清除它stackoverflow.com/questions/29790417/…
    猜你喜欢
    • 2018-05-19
    • 2020-03-30
    • 1970-01-01
    • 2021-06-06
    • 1970-01-01
    • 2019-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多