首页 文章

如何将json字符串解析为dataframe中的字符串数组

提问于
浏览 1748
0

我是Scala的新手,只花了3个小时试图找出如何将一个简单的json字符串解析为数据帧内的字符串数组 .

这是我的代码:

import spark.implicits._
import org.apache.spark.sql.functions._
...
emailsDf.select(from_json($"emails", Array[String])).show()

emailsDf 数据框有一列名为"emails",每行都是一个字符串数组的json字符串: ["test1@mail.com", test2@mail.com, ...]

这是我收到的错误消息:

描述资源路径位置类型缺少参数的参数列表适用于对象数组未应用的方法仅在需要函数类型时转换为函数 . 您可以通过编写apply _或apply()()而不是apply来使此转换显式化 .

1 回答

  • 0

    您可以使用UDF将字符串转换为数组 . 一些包含一些测试数据的小例子:

    val df = Seq("[email1, email2, email3]", "[email4, email5]").toDF("emails")
    
    val split_string_array = udf((emails: String) => {
      emails.substring(1, emails.length - 1).split(",").map(_.trim)
    })
    
    val df2 = df.withColumn("emails", split_string_array($"emails"))
    

    df2 现在将包含带有数组的单个列

    root
     |-- emails: array (nullable = true)
     |    |-- element: string (containsNull = true)
    

    如所想 .

相关问题