存儲數據我目前有以下豬腳本(列的列表截斷簡潔):大和動態的分組/路徑
REGISTER /usr/lib/pig/piggybank.jar;
inputData = LOAD '/data/$date*.{bz2,bz,gz}' USING PigStorage('\\x7F')
PigStorage('\\x7F')
AS (
SITE_ID_COL :int,-- = Item Site ID
META_ID_COL :int,-- = Top Level (meta) category ID
EXTRACT_DATE_COL :chararray,-- = Date for the data points
...
)
SPLIT inputData INTO site0 IF (SITE_ID_COL == 0), site3 IF (SITE_ID_COL == 3), site15 IF (SITE_ID_COL == 15);
STORE site0 INTO 'pigsplit1/0/' USING org.apache.pig.piggybank.storage.MultiStorage('pigsplit1/0/','2', 'bz2', '\\x7F');
STORE site3 INTO 'pigsplit1/3/' USING org.apache.pig.piggybank.storage.MultiStorage('pigsplit1/3/','2', 'bz2', '\\x7F');
STORE site15 INTO 'pigsplit1/15/' USING org.apache.pig.piggybank.storage.MultiStorage('pigsplit1/15/','2', 'bz2', '\\x7F');
而且它是我想要它做的偉大工程,但實際上有至少22個可能的網站ID,我不確定沒有更多。我想動態創建分割並存儲到基於該列的路徑中。最簡單的方法是通過MultiStorage UDF的兩步使用,首先按站點ID分割,然後加載所有這些結果並按日期分割?這似乎效率低下。我可以通過GROUP BYs以某種方式做到這一點嗎?看起來我應該可以通過GROUP BY站點ID,然後將每行平放並運行多存儲,但我不確定如何將GROUP連接到路徑中。