Apache Spark:将带有JSON字符串的列转换为Scala spark中的新Dataframe

Cla*_*zes 3 json scala apache-spark apache-spark-sql

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

示例:

原始数据帧:

---------------------
|        json_string|
---------------------
|{"a":2,"b":"hello"}|
|   {"a":1,"b":"hi"}|
---------------------
Run Code Online (Sandbox Code Playgroud)

转换/解析后

--------------
|  a |     b |
--------------
|  2 |  hello|
|  1 |     hi|
--------------
Run Code Online (Sandbox Code Playgroud)

我使用的是Apache Spark 2.1.1.

Sha*_*ala 10

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

这是你可以做的

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

val ds = rdd.toDS
Run Code Online (Sandbox Code Playgroud)

现在加载为json

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

df.show(false)
Run Code Online (Sandbox Code Playgroud)

也使用json(ds),json(rdd)不推荐使用2.2.0

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

输出:

+---+-----+
|a  |b    |
+---+-----+
|2  |hello|
|1  |hi   |
+---+-----+
Run Code Online (Sandbox Code Playgroud)