Spark Scala:将StructType转换为String

Igo*_*ock 1 scala apache-spark apache-spark-sql

我读json为:

val df = spark.read.json(rdd)
Run Code Online (Sandbox Code Playgroud)

我阅读了来自不同主题的消息,因此无法指定显式架构。某些消息包含带有嵌套json的字段,它们将转换为StructType。例如:

{"name": "John", "son": {"name":"Tom"}}
Run Code Online (Sandbox Code Playgroud)

如何将其转换为String?我需要将“儿子”字段读取为字符串:

"{\"name\":\"Tom\"}"
Run Code Online (Sandbox Code Playgroud)

使用cast方法或sql函数失败:

df.selectExpr("cast(son as string)")
Run Code Online (Sandbox Code Playgroud)

错误:

java.lang.String is not a valid external type for schema of struct<name:string>
Run Code Online (Sandbox Code Playgroud)

che*_*aux 5

您可以轻松地执行此操作,to_json并返回一个字符串

df.select(to_json(df("son")))
Run Code Online (Sandbox Code Playgroud)