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