ハイブに外部テーブルがあります
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 を単純に抽出し、explode を使用せずに productCategories の配列として返す方法があるかどうかは誰にもわかりません。次のようなもの:
["footwear", "eyewear"]
それとも、独自の GenericUDF を作成する必要がありますか? もしそうなら、私は Java (Ruby の人) をあまり知りません。誰かヒントを教えてもらえますか? Apache Hive から UDF に関する説明を読みました。しかし、どのコレクション型が配列を処理するのに最適で、どのコレクション型が構造体を処理するのに最適なのかわかりません。
===
GenericUDF を作成することでこの質問にある程度答えましたが、他に 2 つの問題が発生しました。それはこのSOの質問にあります