我已经创建了一个java hadoop自定义阅读器,读取tar.bzip2文件,但它需要太多时间来读取文件,因为只有一个核心被使用,一段时间后,应用程序失败,因为只有一个执行器得到所有的数据。
所以我们知道bzip文件是可以分割的,所以当把bzip文件读到RDD中时,数据会分布在各个分区。然而,底层的焦油文件也会分布在各个分区上,而且是不可分割的,因此,如果你试图在一个分区上执行操作,你将会看到大量的二进制数据。
为了解决这个问题,我简单地将 bzipped 数据读取到一个单一分区的 RDD 中。然后我把这个 RDD 写到一个目录中,所以现在你只有一个包含所有 tar 文件数据的单一文件。然后我把这个 tar 文件从 hdfs 下拉到我的本地文件系统中,并将其解压缩。