如何在spark中并行读取tar.bzip2文件。我已经创建了一个java hadoop自定义读取器来读取tar.bzip2文件,但是由于只使用了一个内核,并且在一段时间后应用程序失败了,因为只有一个执行器获取所有数据,所以读取该文件花费了太多时间。
khbbv19g1#
所以我们知道bzipped文件是可拆分的,所以当将bzipped读入rdd时,数据将分布在各个分区中。但是,底层tar文件也将分布在各个分区中,并且它是不可拆分的,因此如果您尝试在分区上执行操作,您将只看到大量二进制数据。为了解决这个问题,我只需将bzipped数据读入带有单个分区的rdd中。然后我将这个rdd写到一个目录中,所以现在只有一个包含所有tar文件数据的文件。然后我把这个tar文件从hdfs拉到我的本地文件系统,并将其解压。
1条答案
按热度按时间khbbv19g1#
所以我们知道bzipped文件是可拆分的,所以当将bzipped读入rdd时,数据将分布在各个分区中。但是,底层tar文件也将分布在各个分区中,并且它是不可拆分的,因此如果您尝试在分区上执行操作,您将只看到大量二进制数据。
为了解决这个问题,我只需将bzipped数据读入带有单个分区的rdd中。然后我将这个rdd写到一个目录中,所以现在只有一个包含所有tar文件数据的文件。然后我把这个tar文件从hdfs拉到我的本地文件系统,并将其解压。