2016-05-18 6 views
0

Ich habe Tabelle mit jsons:hive explodieren Liste von json-string

CREATE TABLE TABLE_JSON (
    json_body string 
); 

Json hat Struktur:

{ obj1: { fields ... }, obj2: [array] } 

ich von Array alle Elemente auswählen möchten, aber ich kann es nicht.

Zum Beispiel kann ich alle Felder aus erstem Objekt erhalten:

SELECT f.fields... 
    FROM (
     SELECT q1.obj1, q1.obj2 
     FROM TABLE_JSON jt 
     LATERAL VIEW JSON_TUPLE(jt.json_body, 'obj1', 'obj2') q1 AS obj1, obj2 
    ) as json_table2 
    LATERAL VIEW JSON_TUPLE(TABLE_JSON.obj1, 'fields...') f AS fields...; 

Aber mit Array dieser Methode nicht funktioniert.

Ich habe versucht,

... 
    LATERAL VIEW explode(json_table2.obj2) adTable AS arr; 

hive explode doc

Aber obj2 zu verwenden - mit Array-String. Wie transformiere ich String-JSON in Array und explodiere es?

Antwort