我有一个输入文件,包括ID,CITY和Count信息,如下所示,我想创建一个csv文件,其中包含每个CITY的ID和计数。计数将被写为' 0'如果ID没有与CITY一起观看。我尝试使用group by,cogroup和flatten生成一个pig脚本,但无法使它提供此样本输出。
我怎样才能为此编写猪脚本?
INPUT(ID,市,COUNT):
00004589,IZMIR,2
00005275,KOCAELI,1
00005275,ISTANBUL,1
00008523,ESKISEHIR,2
输出:
ID,IZMIR,ISTANBUL,ESKISEHIR,KOCAELI
00004589,2,0,0,0
00005275,0,1,0,1
00008523,0,0,2,0
答案 0 :(得分:0)
您可以使用以下脚本创建矩阵:
DATA = load' /tmp/data.csv'使用PigStorage(',')为(ID:chararray,CITY:chararray,COUNT:chararray);
ESKISEHIR =过滤数据(CITY匹配' ESKISEHIR');
ISTANBUL =过滤数据(城市匹配'伊斯坦布尔');
IZMIR =过滤数据(CITY匹配' IZMIR');
KOCAELI =过滤数据(CITY匹配' KOCAELI');
IDLIST = foreach DATA生成$ 0作为ID;
IDLIST =不同的IDLIST;
COGROUPED = cogroup IDLIST $ 0,IZMIR $ 0,ISTANBUL $ 0,ESKISEHIR $ 0,KOCAELI $ 0;
CG_CITY = foreach COGROUPED生成FLATTEN($ 1),FLATTEN((IsEmpty($ 2. $ 2)?{(' 0')}:$ 2. $ 2)),FLATTEN((IsEmpty($ 3. $ 2) )?{(' 0')}:$ 3. $ 2)),FLATTEN((IsEmpty($ 4. $ 2)?{(' 0')}:$ 4. $ 2)), FLATTEN((IsEmpty($ 5. $ 2)?{(' 0')}:$ 5. $ 2));
存储CG_CITY INTO' / tmp / id_city_matrix'使用PigStorage(',');