使用Java将HDFS文件拆分为多个本地文件

时间:2013-04-02 22:01:50

标签: java hadoop

我必须使用Java Code将HDFS文件复制到本地文件系统中,然后写入磁盘分成多个部分。使用snappy / lzo压缩文件。我使用Bufferedreader和Filewriter来读写文件。但是这个操作非常慢。 20分钟,30 GB文件。我可以在2分钟内使用hadoop fs -text转储文件(但不能拆分)。我还能做些什么来加快操作速度吗?

1 个答案:

答案 0 :(得分:0)

因为我有两个传递,首先获得行数,然后是Split。 hadoop fs -text是cpu密集型的。以下是方法:

1)使用行计数Java程序作为Map reduce来获取文件中的行数。然后将它除以我需要的文件总数,得到要写入每个文件的行数。

2)使用与hadoop fs -text

相关的代码

https://superuser.com/a/485602/220236

希望它可以帮助别人。