getmerge
komutu, özellikle HDFS dosyalarının yerel dosya sistemindeki tek bir dosyaya birleştirilmesi için oluşturulmuştur.
Bu komut, bir MapReduce işinin çıktısını indirmek için çok kullanışlıdır. Bu, birden çok part-* dosyası oluşturabilir ve bunları yerel olarak tek bir dosyada birleştirebilir, diğer işlemler için kullanabilirsiniz (örneğin, Sunum için Excel sayfası). Sorularınıza
Yanıtlar:
- hedef dosya sistemi yeterli alan yoksa, o zaman IOException atılır.
getmerge
dahili olarak, bir dosyayı bir defada HDFS'den yerel dosyaya kopyalamak için IOUtils.copyBytes()
(bkz. IOUtils.copyBytes()) işlevini kullanır. Bu işlev, kopyalama işleminde bir hata olduğunda IOException
'u atar.
Bu komut, dosyayı HDFS'den yerel dosya sistemine alan hdfs fs -get
komutu gibi benzer satırlardadır. Tek fark, hdfs fs -getmerge
, HDFS'den yerel dosya sistemine birçok dosyayı birleştirir.
Eğer HDF'ler içinde birden fazla dosya birleştirme istiyorsanız
, sen
FileUtil
sınıfı (
FileUtil.copyMerge() bakınız) den
copyMerge()
yöntemini kullanarak bunu başarabilirsiniz. Bu API bir dizindeki tüm dosyaları tek bir dosyaya kopyalar (tüm kaynak dosyaları birleştirir).
Bunun sorununun olmadığını biliyorum, ancak belki de bu yazıyı yararlı bulabilirsin: http: //stackoverflow.com/questions/21776339/hadoop-getmerge-to-another-machine – vefthym