如何使用 Pig Latin 从 AWS S3 加载数据
Posted
技术标签:
【中文标题】如何使用 Pig Latin 从 AWS S3 加载数据【英文标题】:How to load data from AWS S3 using Pig Latin 【发布时间】:2015-03-24 14:36:47 【问题描述】:我将使用 Pig Latin 检索按日期保存和组织的 CSV 文件。我想自动化这个过程并获取昨天的数据。
下面是代码:
tempdate = CurrentTime();
-- P1D = period of 1 day in ISO format
yesterday = foreach tempdate generate SubtractDuration(tempdate,P1D);
$date = ToString(yesterday, "YYYY-MM-dd");
data = load 's3://folder/folder/$date' as(a: tuple()) ;
dump data;
但我不断收到此错误:
[main] 错误 org.apache.pig.impl.PigContext - 在第 1 行第 5 列遇到“”。
如果我尝试像这样简单地加载数据:
A = LOAD 's3://folder/folder/date/file.csv' as (line: chararray);
dump A;
我收到此错误:
[main] 错误 org.apache.pig.impl.PigContext - 在第 1 行第 1 列遇到“”=“”=“”。
如何避免出现这些错误?
【问题讨论】:
【参考方案1】:首先,你的第一个脚本完全违背了 Pig 脚本的实现方式。您不能像在 Python 中那样在脚本中指定变量。但是,您可以通过例如。通过将-param date="2015-03-25"
附加到您的 Pig 命令,按参数确定日期。如果您希望参数是动态的,您可以这样做。
-param date=`date -d "yesterday" '+%Y-%m-%d'
第二个脚本在我运行时对我有用。
【讨论】:
如果我想在不提供参数的情况下自动化整个过程怎么办?因此,我不想提供参数,而是希望让这个脚本以批处理模式运行。您将如何使用 Pig 实现这一目标? 我真的不明白你不能自动化以上参数,因为它们是相对的?以上是关于如何使用 Pig Latin 从 AWS S3 加载数据的主要内容,如果未能解决你的问题,请参考以下文章