У меня есть внешняя таблица в улейРаспаковка массив структур в улье
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'
;
A записи таблицы могут содержать данные, такие как:
1340321132000, 'some_company', [{"productCategory":"footwear","productId":"nik3756"},{"productCategory":"eyewear","productId":"oak2449"}]
ли кто-нибудь знает, если есть способ просто извлечь всю товарную категорию из этой записи и вернуть ее в виде массива productCategories без использования explode. Что-то вроде следующего:
["footwear", "eyewear"]
Или мне нужно, чтобы написать мой собственный GenericUDF, если это так, я не знаю много Java (человек на Ruby), может кто-нибудь дать мне несколько советов? Я прочитал несколько инструкций по UDF из Apache Hive. Однако я не знаю, какой тип коллекции лучше всего обрабатывать массив, и какой тип коллекции обрабатывать структуры?
===
я несколько ответил на этот вопрос, написав GenericUDF, но я столкнулся с 2 другими проблемами. Именно в этом SO Question
Спасибо, но размер массива не фиксируется. Хотя хорошая идея использовать JRuby, для этого нужно использовать Java для написания GenericUDF. Хуже того, в письменной форме GenericUDF не так много ссылок. – pchu