Hadoop Pig:无效的场投影;投影字段不存在
这给了我以下格式:Hadoop Pig:无效的场投影;投影字段不存在,hadoop,mapreduce,apache-pig,bigdata,Hadoop,Mapreduce,Apache Pig,Bigdata,这给了我以下格式: describe filter_records; 我想显示details1和details2中的firstname。我试过这个: filter_records: {details1: (firstname: chararray,lastname: chararray,age: int,gender: chararray),details2: (firstname: chararray,lastname: chararray,age: int,gender: chararra
describe filter_records;
我想显示details1
和details2
中的firstname
。我试过这个:
filter_records: {details1: (firstname: chararray,lastname: chararray,age: int,gender: chararray),details2: (firstname: chararray,lastname: chararray,age: int,gender: chararray)}
但我得到了一个错误:
display_records = FOREACH filter_records GENERATE display1.firstname;
请说明出现此错误的原因以及解决方法。我在
筛选\u记录中未看到任何关系名称display1
。我猜您使用的不是details1.firstname
而是display1.firstname
。你能像这样改变你的剧本吗
Invalid field projection. Projected field [display1] does not exist in schema: details1:tuple(firstname:chararray,lastname:chararray,age:int,gender:chararray),details2:tuple(firstname:chararray,lastname:chararray,age:int,gender:chararray).
似乎在details1和details2中使用了相同的变量名(firstname、lastname、age、gender)。这样打印时会出现重复错误
display_records = FOREACH filter_records GENERATE details1.firstname;
为了解决这个问题,您需要在details1和details2关系中提供一个唯一的名称,您可以这样更改您的加载模式吗?或者,您可以在details1和details2中提供任何唯一的名称
display_records = FOREACH filter_records GENERATE details1.firstname,details2.firstname;
现在,当您尝试这样做时,您将从details1和details2中获得名字
details1:tuple(firstname1:chararray,lastname1:chararray,age1:int,sex1:chararray),details2:tuple(firstname2:chararray,lastname2:chararray,age2:int,sex2:chararray)
display_records = FOREACH filter_records GENERATE details1.firstname1,details2.firstname2;