我必须使用Java Code将HDFS文件复制到本地文件系统中,然后写入磁盘分成多个部分。使用snappy / lzo压缩文件。我使用Bufferedreader和Filewriter来读写文件。但是这个操作非常慢。 20分钟,30 GB文件。我可以在2分钟内使用hadoop fs -text转储文件(但不能拆分)。我还能做些什么来加快操作速度吗?
答案 0 :(得分:0)
因为我有两个传递,首先获得行数,然后是Split。 hadoop fs -text是cpu密集型的。以下是方法:
1)使用行计数Java程序作为Map reduce来获取文件中的行数。然后将它除以我需要的文件总数,得到要写入每个文件的行数。
2)使用与hadoop fs -text
相关的代码https://superuser.com/a/485602/220236
希望它可以帮助别人。