首页 > 解决方案 > Spark Scala:将 StructType 转换为字符串

问题描述

我将json读为:

val df = spark.read.json(rdd)

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

{"name": "John", "son": {"name":"Tom"}}

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

"{\"name\":\"Tom\"}"

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

df.selectExpr("cast(son as string)")

错误:

java.lang.String is not a valid external type for schema of struct<name:string>

标签: scalaapache-sparkapache-spark-sql

解决方案


你可以很容易地做到这一点to_json,返回一个字符串

df.select(to_json(df("son")))

推荐阅读