Extrahierung habe ich eine externe Tabelle in hiveein Array von Strukturen in Hive
CREATE EXTERNAL TABLE FOO (
TS string,
customerId string,
products array< struct <productCategory:string, productId:string> >
)
PARTITIONED BY (ds string)
ROW FORMAT SERDE 'some.serde'
WITH SERDEPROPERTIES ('error.ignore'='true')
LOCATION 'some_locations'
;
eine Aufzeichnung der Tabelle können Daten wie halten:
1340321132000, 'some_company', [{"productCategory":"footwear","productId":"nik3756"},{"productCategory":"eyewear","productId":"oak2449"}]
Sie jemand wissen, ob es einen Weg gibt Einfach die gesamte ProductCategory aus diesem Datensatz extrahieren und als Array von productCategories zurückgeben, ohne explode zu verwenden. Etwas wie folgt aus:
["footwear", "eyewear"]
Oder muss ich schreibe meine eigenen GenericUDF, wenn ja, ich weiß nicht viel Java (ein Ruby-Person), kann mir jemand ein paar Tips? Ich habe einige Anweisungen zu UDF von Apache Hive gelesen. Ich weiß jedoch nicht, welcher Sammlungstyp am besten mit array umgehen kann und welcher Sammlungstyp für die Handhabung von Strukturen.
===
ich diese Frage etwas beantwortet durch eine GenericUDF zu schreiben, aber ich lief in zwei andere Probleme. Es ist in diesem SO Question
Danke, aber die Größe des Arrays ist nicht festgelegt. Obwohl es eine gute Idee ist, JRuby zu verwenden, müssen Sie Java verwenden, um GenericUDF zu schreiben. Schlimmer noch, es gibt nicht viel Bezug in GenericUDF. – pchu