2017-05-29 12 views
0

私はブタを使ってhbaseテーブルをロードしています。マップをタプルに変換する

関係productにはマップがあるタプルがあります。私はサンプルです。ここタプル に地図データを変換したい...

grunt>dump product; 
06:177602927,[cloud_service#true,wvilnk#true,cmpgeo#true,cmplnk#true,webvid_standard#true,criteria_search#true,typeahead_search#true,aasgbr#true,lnkmin#false,aasdel#true,aasmcu#true,aasvia#true,lnkalt#false,aastlp#true,cmpeel#true,aasfsc#true,aasser#true,aasdhq#true,aasgbm#true,gboint#true,lnkupd#true,aasbig#true,webvid_basic#true,cmpelk#true] 
06:177927527,[cloud_service#true,wvilnk#true,cmpgeo#true,cmplnk#true,webvid_standard#true,criteria_search#true,typeahead_search#true,aasgbr#false,lnkmin#false,aasdel#false,aasmcu#false,aasvia#false,lnkalt#false,aastlp#true,cmpeel#true,aasfsc#false,aasser#false,aasdhq#true,aasgbm#false,gboint#true,lnkupd#true,aasbig#false,webvid_basic#true,cmpelk#true,blake#true] 

私は豚にかなり新しいです

177602927,cloud_service,true 
177602927,wvilnk,true 
177602927,cmpgeo,true 
177602927,cmpgeo,true 

以下のように個々のレコードに各タプルを変換すると、おそらく、この豚ラテンで何かをするのは初めてのことです。どんな助けでも大歓迎です。

答えて

0

問題の修正が見つかりました。

私はMapEntriesToBagと呼ばれるUDFを使って、すべてのマップをバッグに変換します。 ここに私のコードです。

>register /your/path/to/this/Jar/Pigitos-1.0-SNAPSHOT.jar 
>DEFINE MapEntriesToBag pl.ceon.research.pigitos.pig.udf.MapEntriesToBag(); 
>product = LOAD 'hbase://product' USING org.apache.pig.backend.hadoop.hbase.HBaseStorage('a:*', '-loadKey true') AS (id:bytearray, a:map[]) 
>b = foreach product generate flatten(SUBSTRING($0,3,12)), flatten(MapEntriesToBag($1)); 

UDFはJar Pigitos-1.0-SNAPSHOT.jarで利用できます。このjarファイルはhere

からダウンロードできます。詳細は、linkを参照してください。マップデータ型に関連するより面白いUDFがあります。

関連する問題