2013-04-30 18 views
33

Büyük Veri projesi için, tekrarlanan iş yükleri için bellek içi hesaplamalar gibi bazı güzel özelliklere sahip olan spark kullanmayı planlıyorum. Yerel dosyalarda veya HDFS'nin üstünde çalışabilir. Ancak, resmi belgelerde gzipli dosyaların nasıl işleneceğine dair herhangi bir ipucu bulamıyorum. Pratikte, sıkıştırılmamış dosyalar yerine .gz dosyalarını işlemek için oldukça etkili olabilir.gzip desteği Spark

Gzipli dosyaların okunmasını manuel olarak gerçekleştirmenin bir yolu var mı, yoksa bir .gz dosyası okunurken otomatik olarak yapılmakta olan unzipping var mı? Gönderen

cevap

66

Kıvılcım Scala Programlama kılavuzu en section on "Hadoop Datasets":

Kıvılcım Hadoop dağıtılmış dosya sistemi (HDF'ler) veya yerel dosya sistemi dahil Hadoop'un tarafından desteklenen diğer depolama sistemlerinin (saklanan herhangi dosyadan dağıtılmış veri kümelerini oluşturabilir, Amazon S3, Hypertable, HBase, vb. Spark, metin dosyalarını, SequenceFiles ve diğer herhangi bir Hadoop InputFormat'ı destekler.

gzip giriş dosyaları desteği, Hadoop'takiyle aynı şekilde çalışmalıdır. Örneğin, sc.textFile("myFile.gz") otomatik olarak sıkıştırılmış gzip sıkıştırılmış dosyaları (textFile() aslında implemented gzip sıkıştırılmış dosyaları destekleyen Hadoop TextInputFormat kullanarak) okur.

Eğer gzip'li dosya üzerinde sc.textFile() çağırırsanız, Kıvılcım sadece 1 bölüm içeren bir RDD vereceği

notu (0.9.0 itibariyle): Açıklamalarda @ nick-Chammas tarafından belirtildiği gibi

. Bunun nedeni, gzipli dosyaların not splittable olmasıdır. Bir şekilde RDD bölümlerini yeniden yoksa, o RDD herhangi işlemler tek bir çekirdeğe sınırlı olacaktır

ben Araman `sc.textFile()` gzip dosyası üzerinde, Kıvılcım verecektir dikkat ediyorum
+45

sadece 1 bölümlü bir RDD (0.9.0'dan itibaren). Bunun nedeni, sıkıştırılmış dosyaların [ayrıştırılamaz] olmasıdır (http://mail-archives.apache.org/mod_mbox/spark-user/201310.mbox/%[email protected] com% 3E). RDD'yi bir şekilde yeniden bölümlemezseniz, bu RDD'deki herhangi bir işlem tek bir çekirdekle sınırlı olacaktır. –

+3

Logs = sc.textFile ("logs/*. Bz2") 'yi denediğimde,' logs.count() 'adında bir hata alıyorum. Herhangi bir fikir neden? – zbinsd

+0

@zbinsd sonunda sonunda anladınız mı? Tar.gz dosyalarını yüklerken şu hatayı alıyorum: JsonParseException: Geçersiz karakter ((CTRL-CHAR, code 0)): jetonlar – Leon