2016-06-06 5 views
0

Ich möchte wissen, wie Json-Daten in der externen Hive-Tabelle zu komprimieren. Wie kann es gemacht werden? Ich habe externe Tabelle erstellt wie folgt aus:Ist es möglich, Json in der externen Hive-Tabelle zu komprimieren?

CREATE EXTERNAL TABLE tweets (
id BIGINT,created_at STRING,source STRING,favorited BOOLEAN 
)ROW FORMAT SERDE "com.cloudera.hive.serde.JSONSerDe" LOCATION "/user/cloudera/tweets"; 

und ich die Kompressionseigenschaften gesetzt hatte

set mapred.output.compress=true; 
set hive.exec.compress.output=true; 
set mapred.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec; 
set io.compression.codecs=org.apache.hadoop.io.compress.GzipCodec; 

Eingabedatei: test

{ "id": 596344698102419451, "created_at": "MonApr0101: 32: 06+00002013", "source": "blank", "favorited": false } 

nach, dass ich mein json haben laden Datei in hdfs Standort "/user/cloudera/tweets".

aber es ist nicht compre ssed.

Können Sie bitte lassen Sie mich wissen, wie Kompression im Bienenstock externen Tisch zu tun? Kann mir jemand helfen, im Bienenstock externe Tabelle zu komprimieren?

Vielen Dank im Voraus.

Antwort

1

gzip Sie Ihre Dateien und sie setzen, wie (* .gz) in den Tabellenplatz ist

+0

Hallo, Danke für Ihre Antwort ..... Ich habe versucht und ich kann komprimieren, aber wenn ich eine Aggregation Abfrage oben auf externe Tabelle, ich bekomme Fehler wie "fehlgeschlagen mit Ausnahme java.io.IOException: org.apache.hadoop.hive.serde2.SerDeException: org.codehaus.jackson.JsonParseException: Unerwartetes Ende der Eingabe: erwartete enge Markierung für OBJECT" –

+0

Dies scheint nicht im Zusammenhang mit der Komprimierung. Bitte überprüfen Sie Ihre Datei. Es sollte genau eine Zeile pro Datensatz (json-Objekt) geben, ohne \ n innerhalb des Json-Objekts. Wie diese Zeile: {"col1": 123, "col2": 321} \ n – leftjoin

+0

Hallo, ich habe nur einen Datensatz in meiner JSON-Datei wie: {"id": 596344698102419451, "created_at": "MonApr0101: 32: 06 +00002013 "," source ":" leer "," bevorzugt ": false} , nach der Komprimierung sieht meine .GZ-Datei wie folgt aus: 0 \t {" id ": 596344698102419451," created_at ":" MonApr0101: 32: 06 + 00002013 "," source ":" leer "," favorisiert ": false} Null hinzufügen, aber wenn ich eine Aggregation Abfrage oben auf externe Tabelle ausführen, bekomme ich Fehler wie unten –

0

Sie dekomprimieren müssen, bevor Sie es wie json auswählen wird. Sie können nicht beide serde (json und gzip)

Verwandte Themen