使用-tagsource选项的PIG表现得很奇怪

时间:2013-02-04 16:36:42

标签: apache-pig

我在加载输入数据时使用-tagsource选项 识别输入源。看来,后来我只投影了 从输入元组中选择的字段,有一些假设和 虽然我试图忽略它们,但某些字段会一直被投射出来。

看看我的剧本。

  

rawdata = load'data / 201212 *'使用PigStorage('',' - tagsource')作为   (filename:chararray,ts:int,ip:chararray,domain:chararray,   回答:chararray);

     

A = foreach rawdata生成ts,ip,domain,answer,   CONCAT(CONCAT(文件名,'_'),UPPER(SUBSTRING(域,0,1)))as as   domain_index,filename as filename;

     

B = foreach A生成ip为ip,SUBSTRING(domain,0,1)为   domain_first_char,filename;

     

转储A;

     

转储B;

     

说明B;

创建B时,我试图仅包括来自A的选定字段。 但是,如果我转储B,'ts'字段(A中的第一个字段)会一直显示 在B.但在ILLUSTRATE B中,一切看起来都不错。

  

转储A:

     

(100,123.98.11.123,google.com,{(谷歌)},20121201_G,20121201)

     

(95,500.98.11.123,yahoo.com,{(雅虎)},20121201_Y,20121201)

     

(107,123.98.11.123,google.com,{(谷歌)},20121201_G,20121201)

     

(156,123.98.11.123,cnn.com,{(CNN)},20121201_C,20121201)

     

B的转储:

     

(100,G,20121201)

     

(95,Y,20121201)

     

(107克,20121201)

     

(156,C,20121201)

说明B:

  

B | ip:chararray | domain_first_char:chararray | filename:chararray

     

| 123.98.11.123 | g | 20121202

如转储B所示,而不是将ip值打印为第一个字段(如 在图B)中,它打印了ts字段。

1 个答案:

答案 0 :(得分:0)

在互联网上搜索,我发现这是PigStorage中的一个错误并找到了解决方法。

使用标记-t ColumnMapKeyPrune开始生猪有助于解决此问题,即使用命令pig -x local -t ColumnMapKeyPrune sample.pig启动猪。

感谢pig用户组的Reremiah Rounds