2

我在 Ubuntu 12.04 上使用 Hadoop 1.0.3、Pig 0.11.0。HDFS的part-m-00000文件内容如下

training@BigDataVM:~/Installations/hadoop-1.0.3$ bin/hadoop fs -cat /user/training/user/part-m-00000
1,Praveen,20,India,M
2,Prajval,5,India,M
3,Prathibha,15,印度,F

我将它装入一个袋子,然后按如下方式过滤。

用户 1 = 加载 '/user/training/user/part-m-00000' 为 (user_id, name, age:int, country, gender);
Fltrd = 按年龄 <= 16 过滤用户 1;

但是,当我转储Users1 5 记录时,控制台中会显示。但是,转储Fltrd将不会获取任何记录。

转储 Fltrd;

以下警告显示在 Pig 控制台中

2013-02-24 16:19:40,735 [main] WARN org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.MapReduceLauncher - 遇到警告 ACCESSING_NON_EXISTENT_FIELD 12 次。

看起来我犯了一些简单的错误,但无法弄清楚它是什么。请帮我解决一下这个。

4

1 回答 1

1

由于您没有定义任何加载函数,Pig 将使用默认分隔符为'\t' 的PigStorage

如果 part-m-00000 是文本文件,则尝试将分隔符设置为 ',' :

Users1 = load '/user/training/user/part-m-00000' using PigStorage(',') 
  as (user_id, name, age:int, country, gender);

如果它是一个 SequenceFile,那么看看 Dolan 或这个问题的回答。

于 2013-02-24T13:05:03.933 回答