Pig ERROR 1066:无法打开迭代器进行别名测试

时间:2014-07-01 17:03:43

标签: hadoop mapreduce apache-pig

我明白了:

org.apache.pig.impl.logicalLayer.FrontendException: ERROR 1066: Unable to open iterator for test

当我有代码时:

my_file = LOAD '$my_records_file' USING PigStorage('\t') AS (field0:chararray, field1:int);
test = FILTER my_file BY field0 != null;

为什么我收到此错误?

3 个答案:

答案 0 :(得分:1)

我认为您想要过滤具有空值的行? 语法是field0 IS NOT NULL。

my_file = LOAD '$my_records_file' USING PigStorage('\t') AS (field0:chararray, field1:int);
test = FILTER my_file BY field0 IS NOT NULL;

但是如果要筛选值等于null的行,则代码为:

my_file = LOAD '$my_records_file' USING PigStorage('\t') AS (field0:chararray, field1:int);
test = FILTER my_file BY field0 !='null';

答案 1 :(得分:1)

获得此错误的其他原因之一是通过本地模式或HDFS模式运行Pig。除了此错误,我们的控制台上还有一条消息,无法从路径中读取数据。如果是这种情况,那么首先检查您是在本地模式还是HDFS模式下使用Pig 。在本地模式下,PIG将从LFS(本地文件系统)获取输入数据。但是,在HDFS中,它将从HDFS目录中获取输入数据。

  作业提交期间的

后端错误消息org.apache.pig.backend.executionengine.ExecException:ERROR 2118:输入路径不存在:

     

Pig Stack Trace:ERROR 1066:无法打开别名的迭代器

因此,请务必在加载文件时避免此错误。

答案 2 :(得分:0)

代码:

my_file = LOAD '$my_records_file' USING PigStorage('\t') AS (field0:chararray, field1:int);
test = FILTER my_file BY field0 != null;

有错误。

field0 != null应为field0 != 'null'

此代码:

my_file = LOAD '$my_records_file' USING PigStorage('\t') AS (field0:chararray, field1:int);
test = FILTER my_file BY field0 != 'null';

纠正错误。