Hadoop 如何让Pig将多个文件馈送到一个映射器中

Hadoop 如何让Pig将多个文件馈送到一个映射器中,hadoop,mapreduce,hdfs,apache-pig,Hadoop,Mapreduce,Hdfs,Apache Pig,是否可以让Pig使用一个映射器处理多个小文件(假设这样做将提高作业速度)。我们有一个问题,hdfs中有数千个小文件,pig创建了数百个映射器。Pig是否提供了解决此问题的简单(完整或部分)解决方案?您可以利用这些属性将这些多个文件合并到一个文件中,以便由单个映射处理它们: pig.maxCombinedSplitSize–指定单个映射要处理的数据的大小(以字节为单位)。合并较小的文件,直到达到此大小 pig.splitcomposition–打开或关闭合并拆分文件(默认设置为“true”)

是否可以让Pig使用一个映射器处理多个小文件(假设这样做将提高作业速度)。我们有一个问题,hdfs中有数千个小文件,pig创建了数百个映射器。Pig是否提供了解决此问题的简单(完整或部分)解决方案?

您可以利用这些属性将这些多个文件合并到一个文件中,以便由单个映射处理它们:

  • pig.maxCombinedSplitSize–指定单个映射要处理的数据的大小(以字节为单位)。合并较小的文件,直到达到此大小
  • pig.splitcomposition–打开或关闭合并拆分文件(默认设置为“true”)
此功能适用于PigStorage,无需编写任何自定义加载程序。更多关于这方面的信息可以找到


HTH

Hadoop中使用大量小文件的常见方法是将它们聚合成大序列或Avro文件,然后使用相应的存储函数读取它们。
对于Pig和Avro,请看一下

我一直在尝试将此功能用于Pig存储。使用TextLoader,我可以运行作业。但是,对于PigStorage,它会在将作业提交到集群之前挂起(最后一行日志是:org.apache.pig.backend.hadoop.executionengine.HExecutionEngine-连接到…)的map reduce作业跟踪器。我不知道它在做什么。因为我在集群外部运行Pig客户端,我希望它不会通过网络发送HDFS文件来合并它们?我很想知道这个组合功能是如何工作的,但我还没有找到任何有用的信息。我们很快就会到达那里:)