Pig - 使用位置表示法时如何在 JOIN 之后引用 FOREACH 中的列?
Pig - How to reference columns in a FOREACH after a JOIN when using positional notation?
我有 2 个 table 订单和 order_items
订单 table 包含(order_id、order_date、order_customer_id、order_status、order_month)
order_items 包含 (order_item_id, order_item_order_id, order_item_product_id, order_item_quantity, order_item_subtotal, order_item_product_price)
table 由 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 [=10=], order_items BY ;
orderrevenuebydate = FOREACH ordersjoin GENERATE orders::, order_items::;
尝试为 orderrevenuebydate
生成 FOREACH 时出现以下错误
Unexpected character '$' 2016-06-19 19:17:22,757
[main] ERROR org.apache.pig.tools.grunt.Grunt - ERROR 1200: Unexpected character '$' Details at logfile:
/home/6301dd50e3fac19f7c90fbf9898496/pig_1466356957630.log
您必须直接从关系中引用位置符号。
例如,如果你想从[=17=生成order_date和order_item_subtotal字段]ordersjoin 关系,使用下面的语句。
orderrevenuebydate = FOREACH ordersjoin GENERATE , ;
请注意,在连接操作之后,ordersjoin 关系将包含两个关系的所有属性。
我有 2 个 table 订单和 order_items
订单 table 包含(order_id、order_date、order_customer_id、order_status、order_month) order_items 包含 (order_item_id, order_item_order_id, order_item_product_id, order_item_quantity, order_item_subtotal, order_item_product_price)
table 由 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 [=10=], order_items BY ;
orderrevenuebydate = FOREACH ordersjoin GENERATE orders::, order_items::;
尝试为 orderrevenuebydate
生成 FOREACH 时出现以下错误Unexpected character '$' 2016-06-19 19:17:22,757 [main] ERROR org.apache.pig.tools.grunt.Grunt - ERROR 1200: Unexpected character '$' Details at logfile: /home/6301dd50e3fac19f7c90fbf9898496/pig_1466356957630.log
您必须直接从关系中引用位置符号。
例如,如果你想从[=17=生成order_date和order_item_subtotal字段]ordersjoin 关系,使用下面的语句。
orderrevenuebydate = FOREACH ordersjoin GENERATE , ;
请注意,在连接操作之后,ordersjoin 关系将包含两个关系的所有属性。