pig:字段投影无效;投影字段不存在

lxkprmvk  于 2021-06-04  发布在  Hadoop
关注(0)|答案(1)|浏览(338)
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).

请说明此错误的原因和解决方法。

pxq42qpu

pxq42qpu1#

我没有看到任何亲戚的名字 display1filter_records . 我想不是 details1.firstname 你曾经 display1.firstname . 你能这样改剧本吗?

display_records = FOREACH filter_records GENERATE details1.firstname;

似乎在details1和details2中使用了相同的变量名(firstname、lastname、age、gender)。这样打印时会出现重复错误

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;

相关问题