从 Pig 脚本中提取部分输入
Posted
技术标签:
【中文标题】从 Pig 脚本中提取部分输入【英文标题】:Extracting part of the input from Pig Script 【发布时间】:2014-02-19 06:02:02 【问题描述】:我正在尝试编写一个猪脚本来基本上执行以下操作。
-
从源列表加载输入。我理解给出列表的方式是“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* 加载
我希望在输出中也将当前分区作为一列。所以从分区 1 读取的行应该有一个值为 1 的列,从分区 3 读取的行应该有该列的值为 3。
目前我将“s3://tap-prod/propensity/glPurchaseProbabilities/#runDate/#partition/glPurchaseProbabilities.tsv/part*”作为输入传递给 Pig 脚本。
我的猪脚本会执行类似的加载操作。 s3_consolidated_results = 使用 PigStorage('\t', '-noschema') 加载'$input'
谁能帮我截取该输入变量并从中提取分区并作为列推送?
【问题讨论】:
【参考方案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.以上是关于从 Pig 脚本中提取部分输入的主要内容,如果未能解决你的问题,请参考以下文章
从文件名中提取时间戳并使用 Pig 将其添加到新列(例如日期)中