【问题标题】:Pig - How to reference columns in a FOREACH after a JOIN when using positional notation?Pig - 使用位置表示法时如何在 JOIN 后引用 FOREACH 中的列?
【发布时间】:2016-06-19 19:54:26
【问题描述】:

我有 2 个表 orders 和 order_items

orders 表包含 (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] 错误 org.apache.pig.tools.grunt.Grunt - 错误 1200:意外字符“$”日志文件中的详细信息: /home/6301dd50e3fac19f7c90fbf9898496/pig_1466356957630.log

【问题讨论】:

    标签: hadoop apache-pig hortonworks-data-platform


    【解决方案1】:

    您必须直接从关系中引用位置符号。

    例如,如果您想从 ordersjoin 关系中生成 order_dateorder_item_subtotal 字段,请使用以下语句。

    orderrevenuebydate = FOREACH ordersjoin GENERATE $1, $9;
    

    请注意,在连接操作之后,ordersjoin 关系将包含来自两个关系的所有属性。

    【讨论】:

      猜你喜欢
      • 2011-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多