我明白了:
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;
为什么我收到此错误?
答案 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';
纠正错误。