Tôi có một bảng bên ngoài trong hiveTrích xuất một mảng của cấu trúc trong 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'
;
Một kỷ lục của bảng có thể chứa dữ liệu như:
1340321132000, 'some_company', [{"productCategory":"footwear","productId":"nik3756"},{"productCategory":"eyewear","productId":"oak2449"}]
Đừng ai biết nếu có một cách chỉ cần trích xuất tất cả productCategory từ bản ghi này và trả về nó như là một mảng của productCategories mà không cần sử dụng phát nổ. Một cái gì đó như sau:
["footwear", "eyewear"]
Hoặc tôi cần viết GenericUDF của riêng mình, nếu có, tôi không biết nhiều Java (người Ruby), ai đó có thể cho tôi một số gợi ý không? Tôi đã đọc một số hướng dẫn về UDF từ Apache Hive. Tuy nhiên, tôi không biết loại bộ sưu tập nào là tốt nhất để xử lý mảng và loại bộ sưu tập nào để xử lý cấu trúc?
===
Tôi đã trả lời câu hỏi này bằng cách viết GenericUDF, nhưng tôi đã gặp phải 2 vấn đề khác. Chính trong số này là SO Question
Cảm ơn, nhưng kích thước của mảng không cố định. Trong khi ý tưởng tốt để sử dụng JRuby, cho điều này, cần phải sử dụng Java để viết GenericUDF. Tệ hơn nữa, không có nhiều tài liệu tham khảo bằng văn bản GenericUDF. – pchu