如何使用 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 加载数据的主要内容,如果未能解决你的问题,请参考以下文章

使用 Pig latin 从文件中获取最大日期

如何在 Pig Latin 中进行“总结”?

Pig Script 上的多个 AWS 账户

pig latin - 从单行输入创建多行输出

无法从 Pig Latin 的 Hadoop HDFS 加载文件

使用 PIG Latin 加载 XML