我有2个表订单和order_items
订单表包含(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)
这些表由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:17:22,757 [main] ERROR org.apache.pig.tools.grunt.Grunt - ERROR 1200:日志文件中出现意外字符“$”的详细信息: /home/6301dd50e3fac19f7c90fbf9898496/pig_1466356957630.log
答案 0 :(得分:0)
您必须直接引用关系中的位置表示法。
例如,如果要从 ordersjoin 关系生成 order_date 和 order_item_subtotal 字段,请使用以下语句。
orderrevenuebydate = FOREACH ordersjoin GENERATE $1, $9;
请注意,在连接操作之后, ordersjoin 关系将包含两个关系中的所有属性。