Hadoop Pig Latin-foreach生成方法在没有第一个字段的情况下无法工作

Hadoop Pig Latin-foreach生成方法在没有第一个字段的情况下无法工作,hadoop,apache-pig,latin,Hadoop,Apache Pig,Latin,我在pig生成函数中遇到了一个奇怪的问题,如果我不使用第一个字段,生成的数据似乎是错误的。这是预期的行为吗 a = load '/input/temp2.txt' using PigStorage(' ','-tagFile') as (fname:chararray,line:chararray) ; grunt> b = foreach a generate $1; grunt> dump b; (temp2.txt) (temp2.txt)

我在pig生成函数中遇到了一个奇怪的问题,如果我不使用第一个字段,生成的数据似乎是错误的。这是预期的行为吗

 a = load '/input/temp2.txt' using PigStorage(' ','-tagFile') as      (fname:chararray,line:chararray) ;
grunt> b = foreach a generate $1;
grunt> dump b;
      (temp2.txt)
      (temp2.txt)
grunt> c = foreach a generate $0,$1;
grunt> dump c;
       (temp2.txt,field1,field2)
       (temp2.txt,field1,field22)

$cat temp2.txt
field1,field2
field1,field22


pig -version
Apache Pig version 0.15.0 (r1682971)
compiled Jun 01 2015, 11:44:35

在本例中,我希望dump b返回数据文件值,而不是文件名。在本例中,您使用了
PigStorage('''-tagFile')
,因此每一行都按空间分割

然后:

$0->field1,field2

$1->什么都没有


只要使用
PigStorage(“,”,“-tagFile”)

就可以了,如果你看到我的例子的话。。字段1是文件名。我相信字段($1)什么都不是,为什么您通过“生成$1”获得文件名是因为“-tagFile”总是在第一列显示文件名。如果您参考pig文档(),它提到“('tagFile')-添加第一列表示记录的输入文件名。”。谢谢,文档也这样说“源标记如果指定了标记文件,PigStorage将在每个元组/行的输入拆分名称前加上前缀。用法:A=使用PigStorage(“,”,“-tagFile”)加载“输入”;B=每台A产生$0;每个元组中的第一个字段(第0个索引)将包含输入文件名。如果指定了tagPath,PigStorage将在每个元组/行的输入拆分路径前加上前缀。用法:A=使用PigStorage(“,”,“-tagPath”)加载“输入”;B=每台A产生$0;每个元组中的第一个字段(第0个索引)将包含输入文件路径“