2015-04-28 6 views
9

Im:S3 tek json dosyası olarak büyük Spark Dataframe kaydet Amazon S3 tek json dosyası (20G fazlasının) bir Spark DataFrame kurtarmaya çalışırken, dataframe kurtarmak için benim kod aşağıdaki gibi olduğunu

dataframe.repartition(1).save("s3n://mybucket/testfile","json") 

Ancak S3'ten bir hata alıyorum "Önerilen yüklemeniz izin verilen maksimum boyutu aşıyor", Amazon tarafından izin verilen maksimum dosya boyutunun 5 GB olduğunu biliyorum.

S3 multipart yüklemesini Spark ile kullanmak mümkün mü? ya da bunu çözmek için başka bir yol var mı?

Verileri başka bir kullanıcı sonra indireceğinden, verileri tek bir dosyada istiyorum.

* Spark-ec2 betiği ile oluşturulan 3 düğümlü bir kümede apache spark 1.3.1 kullanıyorum.

teşekkürler bence Spark

JG

+0

Sadece ben S3N yerine S3A kullanırsanız benim problem (http://wiki.apache.org/hadoop/AmazonS3) çözebiliriz gördü deneyin ama şey kullanıyorum hadoop sürümü (Hadoop 2.0.0-cdh4.2.0) s3a desteklemiyor. Herhangi bir fikir? Tekrar teşekkürler. – jegordon

cevap

18

Büyük veri çerçevesini, daha sonra hedeflediğiniz dosyaya eklediğiniz bir dizi daha küçük veri çerçevesine ayırmayı deneyeceğim.

df.write.mode('append').json(yourtargetpath) 
+8

@ TheRandomSuite: Herhangi bir şansla, '_SUCCES' ve 'part- *' dizini yerine tercihim olarak s3 anahtar adı altında bir dosyaya hadoopish biçimini ve saklanan verileri saklamak mümkün olup olmadığını biliyor musunuz? – lisak

+1

Bu benim için de çalıştı! Teşekkürler @Jared !! –

-2

S3A olmayan bir sürü üretim versiyonu. Tasarımın sağlam olmadığını söyleyebilirim. yeniden bölümleme (1) korkunç olacak (kıvılcım söylediğiniz şey tüm bölümleri tek bir noktaya birleştirmektir). Tek bir dosya yerine bir klasörden içerik indirmeye ikna etmenizi öneririm

2

bu

dataframe.write.format("org.apache.spark.sql.json").mode(SaveMode.Append).save("hdfs://localhost:9000/sampletext.txt"); 
İlgili konular