【问题标题】:Apache Spark: Convert column with a JSON String to new Dataframe in Scala spark [duplicate]Apache Spark:将带有JSON字符串的列转换为Scala spark中的新数据框[重复]
【发布时间】:2018-10-18 17:25:53
【问题描述】:

我有一个带有字符串类型列的 DataFrame,这个字符串是 JSON 格式,我想根据这个 JSON 格式将此列转换为多个列。如果我有 JSON 模式,我可以做到,但我没有。

示例

原始数据框:

---------------------
|        json_string|
---------------------
|{"a":2,"b":"hello"}|
|   {"a":1,"b":"hi"}|
---------------------

转换/解析后

--------------
|  a |     b |
--------------
|  2 |  hello|
|  1 |     hi|
--------------

我使用的是 Apache Spark 2.1.1。

【问题讨论】:

    标签: json scala apache-spark apache-spark-sql


    【解决方案1】:

    如果您没有预定义的架构,另一种选择是将其转换为 RDD[String]Dataset[String] 并加载为 json

    你可以这样做

    //convert to RDD[String]
    val rdd = originalDF.rdd.map(_.getString(0))
    
    val ds = rdd.toDS
    

    现在加载为 json

    val df = spark.read.json(rdd) // or spark.read.json(ds)
    
    df.show(false)
    

    同样使用json(ds)json(rdd) 已被 2.2.0 弃用

    @deprecated("使用 json(Dataset[String]) 代替。", "2.2.0")

    输出:

    +---+-----+
    |a  |b    |
    +---+-----+
    |2  |hello|
    |1  |hi   |
    +---+-----+
    

    【讨论】:

      猜你喜欢
      • 2018-04-14
      • 2021-05-11
      • 1970-01-01
      • 1970-01-01
      • 2018-12-14
      • 2020-02-09
      • 2017-06-11
      • 1970-01-01
      • 2021-05-24
      相关资源
      最近更新 更多