Necesidad de valores establecidos en las columnas de conjunto de datos basado en el valor de la columna 1

Aditya Singh:

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.

Pavel Filatov:

Hay una función get_json_objectexiste 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 jsonatributo 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.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=180603&siteId=1
Recomendado
Clasificación