2016-12-04 3 views
0

einfügen uniontype las ich das berühmte Beispiel über Union-Typ in hivewie in Bienenstock

CREATE TABLE union_test(foo UNIONTYPE<int, double, array<string>, struct<a:int,b:string>>); 
SELECT foo FROM union_test; 

{0:1} 
{1:2.0} 
{2:["three","four"]} 
{3:{"a":5,"b":"five"}} 
{2:["six","seven"]} 
{3:{"a":8,"b":"eight"}} 
{0:9} 

Ok .. super. Wie lautet die Syntax in Hive-SQL, um diese Zeilen einzufügen? Ich habe versucht, in union_test Werte (1.0) SemanticException [Fehler 10044]: Zeile 1:12 einfügen kann nicht in Zieltabelle einfügen, weil Spalte Nummer/Typen sind union_test ': Konvertieren der Spalte 0 von Zeichenfolge zu uniontype, struct>.

Auf der anderen Seite, wenn ich eine Tabelle mit einem Double erstellen, wie kann ich es mit union_test Tabelle füttern?

Sicher gibt es ein Trinkgeld. Danke

+0

Schließlich haben wir den Lib AvroParquetWriter verwendet, um das Schema und die Daten des Nicht-Union-Modells zu transformieren. Wir haben mehrere Möglichkeiten ausprobiert und nichts funktioniert ohne Entwicklung –

Antwort

1

Haben Sie in Betracht gezogen schaut sich die Dokumentation an?

Gerade von Hive Language Manual UDF unter "Komplexe Typkonstruktoren" ...

create_union (tag, val1, val2, ...)
Erstellt eine Union-Typ mit dem Wert, der durch den Tag-Parameter auf die gezeigt wird.


OK, das Aufschluss über den "Tag-Parameter" ist sehr kryptisch.
Zum Beispiel, schauen Sie sich einfach die Unterseite von that blog post und/oder die Antwort auf that question on the HortonWorks forum.

+0

und meine Tests mit create_union scheinen umgekehrt zu sein. Zum Beispiel {3: {"a": 5, "b": "five"}} wird {3: {3: {"a": 5, "b": "five"}}} wenn ich {"a": 5, "b": "five"} möchte –

+0

Das ist der Ruhm von Open Source ... Jetzt können Sie Ihre veröffentlichen eigener Blog-Eintrag, um anderen Blog-Posts zu widersprechen **: -) ** –

+0

Schließlich haben wir den lib AvroParquetWriter verwendet, um das Schema und die Daten des Nicht-Union-Modells zu transformieren. Wir haben es schon einige Male versucht und nichts funktioniert ohne Entwicklung –