从Pig Script中提取部分输入

时间:2014-02-19 06:02:03

标签: apache-pig

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

  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脚本的输入传递。

  4. 我的猪脚本会加载这样的东西。 s3_consolidated_results =使用PigStorage加载'$ input'('\ t',' - noschema')

    任何人都可以帮我解决如何拦截输入变量并从中提取分区并作为列推送?

1 个答案:

答案 0 :(得分:0)

试试这个:

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

引用文档:

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

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