我和Pig的关系如下:
最终= {input_md5::type: chararray,input_md5::name: chararray,input_md5::id: long,input_md5::age: chararray,test_1:: type: chararray,test_2::name:chararray}
我正在尝试存储的所有列 input_md5
与配置单元表的关系。像所有人一样 input_md5::type: chararray,input_md5::name: chararray,input_md5::id: long,input_md5::age: chararray
不接受 test_1:: type: chararray,test_2::name:chararray
pig中是否有只过滤列的命令 input_md5
。如下所示: STORE= FOREACH FINAL GENERATE all input_md5::type .
我知道Pig有: FOREACH FINAL GENERATE all input_md5::type as type
语法,但是我有很多列,所以我不能使用 as
在我的密码里。
因为当我尝试: STORE= FOREACH FINAL GENERATE input_md5::type .. bus_input_md5::name;
pig抛出错误: org.apache.hive.hcatalog.common.HCatException : 2007 : Invalid column position in partition schema : Expected column <type> at position 1, found column <input_md5::type>
提前谢谢,
2条答案
按热度按时间cgh8pdjw1#
已解决此问题,下面是修复方法:
创建与某些筛选条件的关系,如下所示:
DUMMY_RELATION= FILTER SOURCE_TABLE BY type== '';
(我取了一个名为type的列,它可以被表中的任何列过滤,重要的是我们需要它的模式)FINAL_DATASET= UNION DUMMY_RELATION,SCHEMA_1,SCHEMA_2;
(这个新的DUMMY_RELATION
n应该排在联盟的第一)现在你没有了::
运算符和列名将匹配配置单元表的列名,前提是源表(到伪\u关系)和目标表具有相同的列顺序。感谢我自己:)
ctehm74n2#
我用这种方式实现了neethu的例子。可能有拼写错误,但它展示了如何实现这个想法。
感谢尼瑟!