Wie zum einfügen in die Hive-Tabelle mit einer Spalte vom Datentyp "array" <struct<int>>
Ich versuche zum einfügen von Daten in eine Tabelle in Hive, die ich erstellt. Ich habe gekämpft, so bin ich versucht, um es zu vereinfachen, so viel wie möglich zu erhalten, um die Wurzel des Problems.
Hier mein vereinfachter code für das erstellen einer einfachen Tabelle. Ich haben im Grunde ein array der Struktur mit einem einzigen element.
DROP TABLE IF EXISTS foo.S_FILE_PA_JOB_DATA_T;
CREATE TABLE foo.S_FILE_PA_JOB_DATA_T
PARTITIONED BY (customer_id string)
STORED AS AVRO
TBLPROPERTIES (
'avro.schema.literal'=
'{
"namespace": "com.foo.oozie.foo",
"name": "S_FILE_PA_JOB_DATA_T",
"type": "record",
"fields":
[
{"name":"pa_hwm" ,"type":{
"type":"array",
"items":{
"type":"record",
"name":"pa_hwm_record",
"fields":
[
{"name":"pa_axis" ,"type":["int","null"]}
]
}
}}
]
}');
Mein problem ist, ich kann nicht herausfinden, die syntax in die Tabelle einfügen.
insert into table foo.s_FILE_PA_JOB_DATA_T partition (customer_id) values (0,'a390c1cf-4ee5-4ab9-b7a3-73f5f268b669')
Den 0
muss irgendwie ein array<struct<int>>
aber ich kann nicht die syntax Recht. Kann jemand helfen? Danke!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Kann man leider nicht direkt tun. Siehe auch Hive einfügen von Werten in ein array komplexer Typ Spalte.
In der Theorie, Sie sollten in der Lage sein, es zu tun mit so etwas wie
ist, mit der
array()
undnamed_struct()
udfs, die von einigen skalaren Werten konstruieren Sie jeweils ein array, und eine Struktur, die nach Ihren Spezifikationen. (siehe UDF-Dokumentation hier: https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF#LanguageManualUDF-ComplexTypeConstructorsaber leider, wenn Sie das tun, erhalten Sie
da leider hive unterstützt nicht die Verwendung von UDF-Funktionen in der
VALUES
Klausel noch. Wie die anderen Beiträge suggerieren, Sie könnten, tun Sie es mit einer dummy-Tabelle, die ist sowas von häßlich, aber funktioniert.