Tengo una Dataset<Row>
en Java. Necesito leer el valor de la columna 1, que es una cadena JSON, analizarlo y establecer el valor de algunas otras columnas en función del valor JSON analizada.
Mi conjunto de datos es el siguiente:
|json | name| age |
========================================
| "{'a':'john', 'b': 23}" | null| null |
----------------------------------------
| "{'a':'joe', 'b': 25}" | null| null |
----------------------------------------
| "{'a':'zack'}" | null| null |
----------------------------------------
Y necesito hacerlo de esta manera:
|json | name | age |
========================================
| "{'a':'john', 'b': 23}" | 'john'| 23 |
----------------------------------------
| "{'a':'joe', 'b': 25}" | 'joe' | 25 |
----------------------------------------
| "{'a':'zack'}" | 'zack'|null|
----------------------------------------
Soy incapaz de encontrar una manera de hacerlo. Por favor, ayuda con el código.
Hay una función get_json_object
existe en Spark. Lo que sugiere, tiene una trama de datos nombrado df
, puede optar por esta forma de resolver su problema:
df.selectExpr("get_json_object(json, '$.a') as name", "get_json_object(json, '$.b') as age" )
Pero, ante todo, asegúrese de que su json
atributo tiene comillas dobles en lugar de los individuales.
Nota: hay una lista completa de las funciones de chispa SQL . Lo estoy usando en gran medida. Considere para añadirlo a marcadores y tiempo de referencia en cuando.