Чтение только первого уровня JSON - PullRequest
0 голосов
/ 14 сентября 2018

У меня есть набор данных, который содержит двухуровневую строку JSON. Вот пример того, как выглядит мой json:

 "{"field1":"AAA","field2":{"subField1":"000","subField2":"111"},"value":100.0}"

Когда я анализирую его с помощью функции read().json() наборов данных Spark, я получаю следующий результат:

 field1, field2, value 
 AAA, [000,111], 100.0

Я хочу найти способ настроить мое устройство чтения данных таким образом, чтобы оно анализировало только первый уровень моего JSON, давая следующий результат:

field1, field2, value 
AAA, {"subField1":"000","subField2":"111"}, 100.0

Как мне этого добиться?

1 Ответ

0 голосов
/ 14 сентября 2018

Вы можете легко достичь этого, явно определив схему

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)

enter image description here

...