为什么猪的工作罐子如此之大

时间:2013-09-09 11:17:04

标签: java hadoop apache-pig

当我通过PigServer java类执行pig脚本时,正在创建许多Jobxxx.jar。我知道这些是发送到Hadoop集群的Map / Reduce作业。 因为我有一个非常复杂的脚本,我知道这将分成很多不同的工作。 然而,我很困惑,为什么这些jar文件必须如此之大。当然它们都包含我的UDF代码,它不是那么大,但它们也包含例如整个(爆炸的)org / apache / pig结构。生成的jar文件各超过7 MB。

在将这些文件发送到hadoop群集之前,如何防止这些文件变得如此之大?

1 个答案:

答案 0 :(得分:0)

由于多种原因,这些工作规模都很大:

  • 正如mr2ert所说,可以为不同版本的Pig编译作业,MR集群并不真正关心;
  • 猪是客户端的事情。 MR框架可能不关心创建作业的内容,它需要.jar来执行。 Pig编译作业,为实现所需功能的每个作业创建Mapper / Reducer对。

现在,由于Pig在客户端编译作业,然后将作业jar提交到集群,并且由于集群需要具有CLASSPATH中的所有依赖项,因此最合理的选择是创建爆炸.jar。 1}}捆绑所有需要的依赖项。

据我所知,你无法做任何事情来缩小规模,因为这是Pig的作者在提交作业时捆绑依赖关系的工程决策。

而且,坦率地说,如果您在处理.jar的5 - 100 MB时遇到问题,那么您到底使用Pig到底是什么原因?

相关问题