ApachePig本机处理bz2文件?

7y4bm7vi  于 2021-06-03  发布在  Hadoop
关注(0)|答案(1)|浏览(328)

我可以看到pig可以本机读取.bz2文件,但我不确定它是否运行显式作业将bz2拆分为多个inputsplits?有人能证实吗?如果pig运行一个作业来创建inputsplits,有没有办法避免这种情况?我是说一种让mapreduce框架在框架级别将bz2文件分割成多个输入的方法?

pzfprimi

pzfprimi1#

hadoop(或pig,它只是为您运行mr作业)中没有实现可拆分的输入格式,因此一个文件由一个作业拆分,然后由第二个作业处理拆分。
输入格式定义 isSplittable 方法,该方法定义文件格式原则上是否可以拆分。除此之外,大多数基于文本的格式将检查文件是否使用了已知的压缩编解码器(例如:gzip、bzip2),以及编解码器是否支持拆分(gzip原则上不支持拆分,但bz2支持拆分)。
如果输入格式/编解码器确实允许分割文件,那么分割是在压缩文件中定义的(并且是可配置的)点上定义的(比如每64MB)。创建Map任务以处理每个分割时,获取输入格式以创建文件的记录读取器,并传递读取器应该从何处开始的分割信息(64mb块偏移量)。然后告诉读者寻找分裂的偏移点。此时,底层编解码器将在压缩文件中寻找该点,并向前扫描,直到找到下一个压缩块头(在bz2的情况下)。然后,在编解码器返回的未压缩流上继续正常读取,直到分割端点在未压缩流中传递完毕。

相关问题