describe filter_records;
这给了我以下格式:
filter_records: {details1: (firstname: chararray,lastname: chararray,age: int,gender: chararray),details2: (firstname: chararray,lastname: chararray,age: int,gender: chararray)}
我想同时显示
firstname
和 details1
的 details2
。我试过这个:display_records = FOREACH filter_records GENERATE 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).
请建议为什么会出现此错误以及如何解决此问题。
最佳答案
我在 display1
中没有看到任何关系名称 filter_records
。我猜你用的是 details1.firstname
而不是 display1.firstname
。你能像这样改变你的脚本吗?
display_records = FOREACH filter_records GENERATE details1.firstname;
您似乎在 details1 和 details2 中都使用了相同的变量名(名字、姓氏、年龄、性别)。像这样打印时会出现重复错误
display_records = FOREACH filter_records GENERATE details1.firstname,details2.firstname;
要解决此问题,您需要在 details1 和 details2 关系中提供唯一名称,您可以像这样更改加载模式吗?或者您可以在 details1 和 details2 中指定任何唯一名称。
details1:tuple(firstname1:chararray,lastname1:chararray,age1:int,sex1:chararray),details2:tuple(firstname2:chararray,lastname2:chararray,age2:int,sex2:chararray)
现在当你这样尝试时,你会从 details1 和 details2 中得到名字
display_records = FOREACH filter_records GENERATE details1.firstname1,details2.firstname2;
关于hadoop - pig : Invalid field Projection; Projected Field does not exist,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28280832/