2016-04-07 34 views
0
ile yazarken basılan çok sayıda üstbilgi satırı

Büyük CSV dosyalarını yüklemek ve bunları ortak bir sütuna eklemek için Spark SQL kullanıyorum. Kodumdaki birleştirme işlemini gerçekleştirdikten sonra, tabloyu yeni bir CSV dosyasına geri yüklemek istiyorum. Bunu yapmak için DataFrame'in write() yöntemini kullanıyorum. Dosya incelendiğinde, daha sonra üstbilginin takip ettiği üstbilginin birden çok kez basıldığını gördüm. Örneğin:Spark SQL

name, age, addr, job, salary 
name, age, addr, job, salary 
name, age, addr, job, salary 

Bob, 34, 123 Fake St, Programmer, 10000000 
June, 23, 5 Tree Ave., College Student, 15000 
Rick, 12, 43 Ware St., Student, 0 

name, age, addr, job, salary 
name, age, addr, job, salary 
name, age, addr, job, salary 

<more data here> 

Bu çıkış DataFrame sınıfının show() yöntem konsola tabloyu yazdırır ve ben beklediğiniz görüntüler, özellikle de beklenmedik bir durumdur.

ben yazma gerçekleştirmek için kullanıyorum kodu:

bigTable.write().mode(SaveMode.Overwrite).format("com.databricks.spark.csv") 
      .option("header", "true").save(settings.getValue().outputDir +"/bigTable.csv"); 

veri değerleri doğru CSV kaydedilir ayarı option("header", "false") kullanarak. Bu bir hata mı?

+0

Kaynak csv dosyaları nedir? bunları spark-csv ile nasıl okuyorsunuz? @MiladKhajavi'nin sorduğu –

+2

'un nedeni, eğer metin dosyalarıysa ve onlara hadoop fs -text/my/dir/* ile bakıyorsanız, muhtemelen birden fazla dosyaya sahip olursunuz. –

+0

@MiladKhajavi, Ben bunları Spark SQL ile okuyorum (özellikle Databricks 'API'sını kullanarak). Birkaç CSV dosyasından okuyor, ancak Spark SQL dataframes kullanarak bunları bir araya getiriyorum. Bir kez katıldıklarında, sadece 1 başlık satırı olacağını tahmin ediyorum. – dmux

cevap

0

ben partition() ve coalesce() fonksiyonlarını kullanarak bir çözüm bulduk inanıyoruz:

bigTable.repartition(1).coalesce(1).write().format("com.databricks.spark.csv").option("header", "true").save("myoutputfile.csv"); 

CSV dosyası ben beklediğiniz çıkışı bu aramaları ekledikten sonra.

İlgili konular