只读第一层JSON
Reading only the first level of JSON
我有一个包含 2 级 JSON 字符串的数据集。这是我的 json 的示例:
"{"field1":"AAA","field2":{"subField1":"000","subField2":"111"},"value":100.0}"
当我使用 Spark 数据集的 read().json()
函数解析它时,我得到以下结果:
field1, field2, value
AAA, [000,111], 100.0
我想找到一种方法来设置我的数据集 Reader,以便它只解析我的 JSON 的第一级,给出以下结果:
field1, field2, value
AAA, {"subField1":"000","subField2":"111"}, 100.0
我怎样才能做到这一点?
您可以通过显式定义模式轻松实现此目的
val schema = StructType(Array(StructField("field1",StringType,true),StructField("field2",StringType,true),StructField("value",StringType,true)))
val df = spark.read.schema(schema).json("path.json")
df.show(false)
我有一个包含 2 级 JSON 字符串的数据集。这是我的 json 的示例:
"{"field1":"AAA","field2":{"subField1":"000","subField2":"111"},"value":100.0}"
当我使用 Spark 数据集的 read().json()
函数解析它时,我得到以下结果:
field1, field2, value
AAA, [000,111], 100.0
我想找到一种方法来设置我的数据集 Reader,以便它只解析我的 JSON 的第一级,给出以下结果:
field1, field2, value
AAA, {"subField1":"000","subField2":"111"}, 100.0
我怎样才能做到这一点?
您可以通过显式定义模式轻松实现此目的
val schema = StructType(Array(StructField("field1",StringType,true),StructField("field2",StringType,true),StructField("value",StringType,true)))
val df = spark.read.schema(schema).json("path.json")
df.show(false)