pig-当使用位置表示法时,如何在连接之后引用foreach中的列?

pkwftd7m  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(311)

我有两张table和订单
orders表包含(order\u id、order\u date、order\u customer\u id、order\u status、order\u month)order\u items包含(order\u item\u id、order\u item\u order\u id、order\u item\u product\u id、order\u item\u quantity、order\u item\u subtotal、order\u item\u product\u price)
这些表由orders.order\ id和order\ items.order\ item\ order\ id连接
未提供数据类型,因此使用位置表示法。

orders = LOAD '/user/horton/orders' USING PigStorage(',');
order_items = LOAD '/user/horton/orders' USING PigStorage(',');
ordersjoin = JOIN orders BY $0, order_items BY $1 ; 
orderrevenuebydate = FOREACH ordersjoin GENERATE orders::$1,     order_items::$4;

尝试为orderrevenuebydate生成foreach时,出现以下错误
意外字符“$”2016-06-19 19 19:17:22757[main]error org.apache.pig.tools.grunt.grunt-错误1200:日志文件中的意外字符“$”详细信息:/home/6301dd50e3fac19f7c90fbf98496/pig?

ktecyv1j

ktecyv1j1#

您必须直接引用关系中的位置符号。
例如,如果要从ordersjoin关系生成order\u date和order\u item\u subtotal字段,请使用下面的语句。

orderrevenuebydate = FOREACH ordersjoin GENERATE $1, $9;

注意,在join操作之后,ordersjoin关系将包含两个关系中的所有属性。

相关问题