无法使用Apache Pig过滤数据

时间:2013-02-24 10:53:06

标签: hadoop apache-pig

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

  

培训@ BigDataVM:〜/ Installations / hadoop-1.0.3 $ bin / hadoop fs -cat / user / training / user / part-m-00000
  1,普利文,20,印度,男
  2,Prajval,5,印度,男
  3,Prathibha,15岁,印度,F

我将它装入包中,然后按如下方式过滤。

  

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

过滤Users1

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

  

dump Fltrd;

以下警告显示在Pig控制台

  

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

看起来我做了一些简单的错误,但无法弄清楚它是什么。请帮帮我。

1 个答案:

答案 0 :(得分:1)

由于您尚未定义任何加载函数,因此Pig将使用其中的PigStorage 默认分隔符为'\ t'

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

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

如果它是一个SequenceFile,那么请查看关于my问题的Dolan或this答案。