当我通过PigServer java类执行pig脚本时,正在创建许多Jobxxx.jar。我知道这些是发送到Hadoop集群的Map / Reduce作业。 因为我有一个非常复杂的脚本,我知道这将分成很多不同的工作。 然而,我很困惑,为什么这些jar文件必须如此之大。当然它们都包含我的UDF代码,它不是那么大,但它们也包含例如整个(爆炸的)org / apache / pig结构。生成的jar文件各超过7 MB。
在将这些文件发送到hadoop群集之前,如何防止这些文件变得如此之大?
答案 0 :(得分:0)
由于多种原因,这些工作规模都很大:
.jar
来执行。 Pig编译作业,为实现所需功能的每个作业创建Mapper
/ Reducer
对。现在,由于Pig在客户端编译作业,然后将作业jar提交到集群,并且由于集群需要具有CLASSPATH
中的所有依赖项,因此最合理的选择是创建爆炸.jar
。 1}}捆绑所有需要的依赖项。
据我所知,你无法做任何事情来缩小规模,因为这是Pig的作者在提交作业时捆绑依赖关系的工程决策。
而且,坦率地说,如果您在处理.jar
的5 - 100 MB时遇到问题,那么您到底使用Pig到底是什么原因?