¿Cómo convertir Array of Json Strings en Dataset de columnas específicas en Spark 2.2.0?
tengo unDataset<String> ds
que consiste en filas json.
Ejemplo de fila de Json (este es solo un ejemplo de una fila en el conjunto de datos)
[
"{"name": "foo", "address": {"state": "CA", "country": "USA"}, "docs":[{"subject": "english", "year": 2016}]}",
"{"name": "bar", "address": {"state": "OH", "country": "USA"}, "docs":[{"subject": "math", "year": 2017}]}"
]
ds.printSchema ()
root
|-- value: string (nullable = true)
Ahora quiero convertir al siguiente conjunto de datos usando Spark 2.2.0
name | address | docs
----------------------------------------------------------------------------------
"foo" | {"state": "CA", "country": "USA"} | [{"subject": "english", "year": 2016}]
"bar" | {"state": "OH", "country": "USA"} | [{"subject": "math", "year": 2017}]
Preferiblemente Java pero Scala también está bien siempre que haya funciones disponibles en la API de Java
Esto es lo que probé hasta ahora.
val df = Seq("""["{"name": "foo", "address": {"state": "CA", "country": "USA"}, "docs":[{"subject": "english", "year": 2016}]}", "{"name": "bar", "address": {"state": "OH", "country": "USA"}, "docs":[{"subject": "math", "year": 2017}]}" ]""").toDF
df.show (falso)
|value |
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|["{"name": "foo", "address": {"state": "CA", "country": "USA"}, "docs":[{"subject": "english", "year": 2016}]}", "{"name": "bar", "address": {"state": "OH", "country": "USA"}, "docs":[{"subject": "math", "year": 2017}]}" ]|