Spark from_json - StructType und ArrayType

Ich habe einen Datensatz, der kommt, wie XML, und einer der Knoten enthält JSON. Spark liest dies in so einem StringType, so bin ich versucht zu verwenden from_json() zum konvertieren der JSON zu einem DataFrame.

Ich bin in der Lage zu konvertieren einen string mit JSON, aber wie Schreibe ich das schema zu arbeiten mit einem Array?

Strings ohne Array - schön Funktioniert

import org.apache.spark.sql.functions._

val schemaExample = new StructType()
          .add("FirstName", StringType)
          .add("Surname", StringType)

val dfExample = spark.sql("""select "{ \"FirstName\":\"Johnny\", \"Surname\":\"Boy\" }" as theJson""")

val dfICanWorkWith = dfExample.select(from_json($"theJson", schemaExample))

dfICanWorkWith.collect()

//Results \\
res19: Array[org.apache.spark.sql.Row] = Array([[Johnny,Boy]])

String mit einem Array Kann nicht herausfinden this one out

import org.apache.spark.sql.functions._

val schemaExample2 = new StructType()
                              .add("", ArrayType(new StructType()
                                                          .add("FirstName", StringType)
                                                          .add("Surname", StringType)
                                                )
                                  )

val dfExample2= spark.sql("""select "[{ \"FirstName\":\"Johnny\", \"Surname\":\"Boy\" }, { \"FirstName\":\"Franky\", \"Surname\":\"Man\" }" as theJson""")

val dfICanWorkWith = dfExample2.select(from_json($"theJson", schemaExample2))

dfICanWorkWith.collect()

//Result \\
res22: Array[org.apache.spark.sql.Row] = Array([null])
InformationsquelleAutor Dragick | 2017-07-10
Schreibe einen Kommentar