背景
请参阅此问题:Parsing XmlInputFormat element larger than hdfs block size及其答案。
假设我想使用Mahout的XMLInputFormat
使用Hadoop解析维基百科的页面 - 文章bz2压缩XML转储。我的输入可以有两种类型:
第一个是可分割的压缩类型,默认情况下(启用了BZip2Codec
)它将被拆分,并且将使用多个映射器并行处理每个解压缩的BZ2分割。
第二种类型是直接bz2压缩,因此我猜不会拆分? getSplits
使用的默认XMLInputFormat
实现是FileInputFormat.getSplits
,我认为这使得非智能的vanilla拆分不了解我的XML架构。我认为这可能会影响绩效。
问题:
XMLInputFormat
是否适用于不可分割的bz2压缩文件,即原始文本直接压缩,而不是多流bz2(连接)?通过工作,我的意思是并行,使用多个映射器,而不是将所有内容都提供给单个映射器。
如果我实施https://github.com/whym/wikihadoop#splitting之类的自定义getSplits
方法,对我有用吗?另请参阅https://github.com/whym/wikihadoop/blob/master/src/main/java/org/wikimedia/wikihadoop/StreamWikiDumpInputFormat.java#L146 - 此InputFormat使用自定义getSplits
实现。为什么呢?