Struktur: parsing JSON
Ich versuche, einige Werte aus der verschachtelten JSON für Millionen von Zeilen (5 TB+ Tabelle). Was ist der effizienteste Weg, dies zu tun?
Hier ist ein Beispiel:
{"country":"US","page":227,"data":{"ad":{"impressions":{"s":10,"o":10}}}}
Brauche ich diese Werte aus der oben genannten JSON:
Country Page impressions_s impressions_o
--------- ----- ------------- --------------
US 2 10 10
Dies ist Bienenstock json_tuple Funktion, ich bin nicht sicher, ob dies ist die beste Funktion.
https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF#LanguageManualUDF-getjsonobject
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie get_json_object:
Erhalten Sie eine bessere Leistung mit json_tuple aber ich fand ein "how to", um die Werte im json-innen json;
Zum formatieren Ihrer Tabelle, die Sie verwenden können, so etwas wie dieses:
from table t lateral view
explode( split(regexp_replace(get_json_object(ln, ''$.data.ad.s'), '\\[|\\]', ''), ',' ) ) tb1 as s
dieser obige code wandeln Sie ein Array in eine Spalte.
form mehr: https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF
Ich hoffe, dass dies helfen ...
Hier ist, was können Sie schnell versuchen , würde ich vorschlagen, zu verwenden Json-Ser-De.
nano /tmp/hive-Parsen von json.json
Erstellen Basistabelle :
Laden der json-Datei zu Tisch :
Abfrage der Tabelle :
Ausgabe :
LATERAL VIEW
- Anweisung mit einer Verknüpfung (z.B.INNER JOIN
), der Beitritt muss vor der seitlichen Ansicht (syntaktisch)Verwendung von hive native
json-serde('org.apache.hive.hcatalog.data.JsonSerDe')
können Sie dies.. hier sind die Schritte, dieADD JAR /path/to/hive-hcatalog-core.jar;
dann load data(gespeichert in der Datei)
dann bekommen die erforderlichen Daten mit
Umsetzung einer SerDe zu analysieren, Ihre Daten im JSON-Format ist der bessere Weg für Ihren Fall.
Einen tutorial auf, wie zu implementieren SerDe zum Parsen von JSON können hier gefunden werden
http://blog.cloudera.com/blog/2012/12/how-to-use-a-serde-in-apache-hive/
Können Sie das folgende Beispiel SerDe Umsetzung sowie
https://github.com/rcongiu/Hive-JSON-Serde