【问题标题】:Extracting part of the input from Pig Script从 Pig 脚本中提取部分输入
【发布时间】:2014-02-19 06:02:02
【问题描述】:

我正在尝试编写一个猪脚本来基本上执行以下操作。

  1. 从源列表加载输入。我理解给出列表的方式是“s3://prod/propensity/probablitity/#{runDate}/#{partition}/part*” 例如,如果 runDate 是 20131020 并且分区是 1,3。 猪负载将从 s3:\ tap-prod/propensity/probablitity/20131020/1/part* 和 s3:\ tap-prod/propensity/probablitity/20131020/3/part* 加载
  2. 我希望在输出中也将当前分区作为一列。所以从分区 1 读取的行应该有一个值为 1 的列,从分区 3 读取的行应该有该列的值为 3。

  3. 目前我将“s3://tap-prod/propensity/glPurchaseProbabilities/#{runDate}/#{partition}/glPurchaseProbabilities.tsv/part*”作为输入传递给 Pig 脚本。

我的猪脚本会执行类似的加载操作。 s3_consolidated_results = 使用 PigStorage('\t', '-noschema') 加载'$input'

谁能帮我截取该输入变量并从中提取分区并作为列推送?

【问题讨论】:

    标签: apache-pig


    【解决方案1】:

    试试这个:

    A = LOAD 'x' using PigStorage('\t','-tagsource');
    

    引用自文档:

    ('tagsource') - Add a first column indicates the input file of the record.

    之后,您可以进行投影以获取您真正感兴趣的文件名部分。

    【讨论】:

    • 试过了..我不断收到无法识别的选项原因:java.lang.RuntimeException:org.apache.commons.cli.UnrecognizedOptionException:无法识别的选项:org.apache.pig.builtin 的-tagsource。 PigStorage.(PigStorage.java:187) ... 29 更多原因:org.apache.commons.cli.UnrecognizedOptionException:无法识别的选项:-tagsource
    • 你用的是哪个版本的猪?
    • 我用 0.11.0 对其进行了测试,它工作正常。不过也应该使用 0.10.0 (pig.apache.org/docs/r0.10.0/func.html#pigstorage)。
    • 我检查了代码,它没有 tagsource 选项。它只有 2 个架构选项。
    猜你喜欢
    • 2023-03-07
    • 2014-01-05
    • 1970-01-01
    • 1970-01-01
    • 2020-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多