3

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

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

4

1 回答 1

0

这些工作与它们一样大,原因有很多:

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

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

据我所知,您无法做任何事情来减小大小,因为这是 Pig 的作者在提交作业时捆绑依赖项的工程决策。

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

于 2013-10-22T14:49:51.127 回答