一个猪脚本中的两个存储功能

Posted

技术标签:

【中文标题】一个猪脚本中的两个存储功能【英文标题】:two store function in one pig script 【发布时间】:2014-02-21 11:42:47 【问题描述】:

我有一个猪脚本来加载、处理和存储数据。

如果同一个猪脚本中有两个存储函数,它是如何工作的?

a = load 'somefile' using PigStorage(',');
b ...
c ...
d ...
e = store d into 'output1';
f = store c into 'output2';

这是否对每个商店运行两次。那是 store 'e' 它从 'a' 处理到 'e' 而对于 store 'f' 它直接存储 'c'因为它已经被处理或者它将再次从'a'开始

【问题讨论】:

【参考方案1】:

一般来说,底层 map/reduce 框架具有多输出格式,因此 Pig 可以使用该格式并在单个作业中运行两个存储脚本,例如通过单独的reduce,每个reduce都会写入另一个文件

然而,实际的 map/reduce 计划取决于您为获得 c 和 d 所做的工作 - 有时该处理需要不止一个工作 - 要了解脚本的行为方式,您可以使用 Pig 的 explain 命令。如果您想要图形可视化,可以使用Netflix's lipstick

【讨论】:

感谢这帮助我理解了这个概念。我在这里遇到的另一个疑问是,如果它需要不止一项工作,它是否会为每个商店加载两次,我的意思是说它是否为每个商店“e”和“f”加载两次“somefile” 这真的取决于你在做什么。通常 Pig 足够聪明,如果可以的话,不会加载两次。正如我所说,如果这对您很重要,您应该在让它运行之前先查看计划 非常感谢它帮助了我。你能在这个***.com/questions/21698582/… 上给我建议吗?如果我不应该在这里问这个但我需要帮助,我很抱歉。

以上是关于一个猪脚本中的两个存储功能的主要内容,如果未能解决你的问题,请参考以下文章

猪用户定义函数中的 aws Amazon S3 客户端凭证

如何在猪脚本中对单行中的字段进行总计?

将猪结果存储到本地文件

访问存储在 HDFS 分布式缓存中的 python 脚本中的文件

我的猪拉丁文脚本中的错误

如何在另一个猪脚本中调用猪脚本