2015-12-20 5 views
6

JSON dosyasına bir kıvılcım DataFrame kaydetmek için aşağıdaki kodu kullanıyorumBir DataFrame kaydedilirken crc dosyaları ve SUCCESS dosyaları oluşturulmasından nasıl kaçınılmalı?

unzipJSON.write.mode("append").json("/home/eranw/Workspace/JSON/output/unCompressedJson.json") 

çıktı sonucudur: Tek bir JSON dosyası ve bir dosya başına üretmek nasıl

part-r-00000-704b5725-15ea-4705-b347-285a4b0e7fd8 
.part-r-00000-704b5725-15ea-4705-b347-285a4b0e7fd8.crc 
part-r-00001-704b5725-15ea-4705-b347-285a4b0e7fd8 
.part-r-00001-704b5725-15ea-4705-b347-285a4b0e7fd8.crc 
_SUCCESS 
._SUCCESS.crc 
  1. hat?
  2. * Crc dosyalarından nasıl korunabilirim?
  3. SUCCESS dosyasından nasıl kurtulabilirim? Eğer tek bir dosya istiyorsanız

cevap

8

, bunu, yazma çağırmadan önce tek bir bölüm için coalesce yapmanız gerekir: Şahsen

unzipJSON.coalesce(1).write.mode("append").json("/home/eranw/Workspace/JSON/output/unCompressedJson.json") 

, ben çıkış dosyalarının sayısı bağlı olduğu oldukça rahatsız edici buluyorum write'u aramadan önce sahip olduğunuz bölümlerin sayısı üzerinde - özellikle partitionBy ile write yapıyorsanız - ama bildiğim kadarıyla başka bir yol yok.

.crc dosyalarını devre dışı bırakmanın bir yolu olup olmadığını bilmiyorum - bir tanesini bilmiyorum - ancak Spark içeriğinin hadoop yapılandırmasında aşağıdakileri ayarlayarak _SUCCESS dosyasını devre dışı bırakabilirsiniz. Ayrıca meta veri dosyaları nesil devre dışı bırakmak isteyebilirsiniz o

sc.hadoopConfiguration.set("mapreduce.fileoutputcommitter.marksuccessfuljobs", "false") 

Not: Görünüşe

sc.hadoopConfiguration.set("parquet.enable.summary-metadata", "false") 

, meta veri dosyaları oluşturma biraz zaman (this blog post bakınız) alır ama aslında o kadar önemli değil (this'a göre). Şahsen, onları her zaman devre dışı bırakıyorum ve hiçbir sorunum olmadı.

+0

Sorunun nedeni CRC' ve '_SUCCESS' dosyalarına ihtiyacımız var mı? Kıvılcım (çalışan) düğümleri aynı anda veri yazar ve bu dosyalar doğrulama için sağlama toplamı olarak çalışır. Tek bir dosyaya yazma, dağıtılmış hesaplama fikrini ortadan kaldırır ve sonuçta ortaya çıkan dosya çok büyükse bu yaklaşım başarısız olabilir. –