【问题标题】:how to convert string to array in Spark Scala如何在 Spark Scala 中将字符串转换为数组
【发布时间】:2017-10-10 07:21:00
【问题描述】:

我有一个 json 文件,在 spark.read.json 之后,其中一列(名称:js)具有以下格式:

{"pp":1,"its":"[{"def":false, "val":3},{"def":true, "val":2},...]"}

我需要将“its”分解,这样我才能知道每个def,以及里面的每个val,并且defs和vals的数量是不确定的。

当我阅读它时,使用

val df = tmp.select($"js.its")

df 是字符串的 DataFrame。我可以将它转换回 Array 以便我可以使用 explode 或任何其他方式来了解所有 defs 值和所有 vals 值吗?

非常感谢

【问题讨论】:

    标签: arrays json scala apache-spark


    【解决方案1】:

    您可以使用 collect_list 以这种方式将其转换回数组(列名只是一个建议:)

    import org.apache.spark.sql.functions._ 
    augmented = df.groupBy("id").agg(collect_list("exploded").as("array"))
    

    【讨论】:

    • 它确实将列转换为数组,但是,当你显示时,它显示 [[{...}]],当我爆炸时,它显示的结果与我时相同tmp.select($"js.its").
    猜你喜欢
    • 2021-12-14
    • 1970-01-01
    • 1970-01-01
    • 2017-11-03
    • 1970-01-01
    • 2015-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多