Share via


CSV dosyalarını okuma ve yazma

Bu makalede Python, Scala, R ve SQL kullanarak Azure Databricks ile CSV dosyalarını okuma ve bu dosyalara yazma örnekleri verilmektedir.

Not

Databricks, SQL kullanıcılarının CSV dosyalarını okuması için tablo değerli read_files işlevini önerir. read_files Databricks Runtime 13.3 LTS ve üzerinde kullanılabilir.

Geçici bir görünüm de kullanabilirsiniz. GEÇICI görünümler veya read_fileskullanmadan DOĞRUDAN CSV verilerini okumak için SQL kullanıyorsanız aşağıdaki sınırlamalar geçerlidir:

Seçenekler

CSV dosya veri kaynakları için çeşitli seçenekler yapılandırabilirsiniz. Desteklenen okuma ve yazma seçenekleri için aşağıdaki Apache Spark başvuru makalelerine bakın.

Hatalı biçimlendirilmiş CSV kayıtlarıyla çalışma

Belirtilen şemaya sahip CSV dosyalarını okurken, dosyalardaki verilerin şemayla eşleşmemesi mümkündür. Örneğin, şehir adını içeren bir alan tamsayı olarak ayrıştırılmaz. Bunun sonuçları, ayrıştırıcının çalıştığı moda bağlıdır:

  • PERMISSIVE (varsayılan): Doğru ayrıştırılamayan alanlar için nulllar eklenir
  • DROPMALFORMED: ayrıştırılamayan alanlar içeren satırları bırakır
  • FAILFAST: Hatalı biçimlendirilmiş veriler bulunursa okumayı durdurur

Modu ayarlamak için seçeneğini kullanın mode .

diamonds_df = (spark.read
  .format("csv")
  .option("mode", "PERMISSIVE")
  .load("/databricks-datasets/Rdatasets/data-001/csv/ggplot2/diamonds.csv")
)

PERMISSIVE Modda, aşağıdaki yöntemlerden birini kullanarak doğru ayrıştırılamayan satırları incelemek mümkündür:

  • Bozuk kayıtları bir dosyaya kaydetme seçeneği badRecordsPath için özel bir yol sağlayabilirsiniz.
  • Sütunu DataFrameReader'a sağlanan şemaya ekleyerek _corrupt_record sonuçta elde edilen DataFrame'deki bozuk kayıtları gözden geçirebilirsiniz.

Not

seçeneği badRecordsPath yerine _corrupt_recordönceliklidir. Bu, sağlanan yola yazılan hatalı biçimlendirilmiş satırların sonuçtaki DataFrame'de görünmediği anlamına gelir.

Kurtarılan veri sütunu kullanılırken hatalı biçimlendirilmiş kayıtlar için varsayılan davranış değişir.

Yanlış biçimlendirilmiş satırlar not defterini bulma

Not defterini alma

Kurtarılan veri sütunu

Not

Bu özellik Databricks Runtime 8.3 (desteklenmeyen) ve üzerinde desteklenir.

Modu kullanırken, bir kayıttaki PERMISSIVE bir veya daha fazla alan aşağıdaki sorunlardan birine sahip olduğundan ayrıştırılmayan verileri yakalamak için kurtarılan veri sütununu etkinleştirebilirsiniz:

  • Sağlanan şemada yok.
  • Sağlanan şemanın veri türüyle eşleşmiyor.
  • Sağlanan şemadaki alan adlarıyla büyük/küçük harf uyuşmazlığı var.

Kurtarılan veri sütunu, kurtarılan sütunları ve kaydın kaynak dosya yolunu içeren bir JSON belgesi olarak döndürülür. Kurtarılan veri sütunundan kaynak dosya yolunu kaldırmak için SQL yapılandırmasını spark.conf.set("spark.databricks.sql.rescuedDataColumn.filePath.enabled", "false")ayarlayabilirsiniz. Ile gibi _rescued_dataspark.read.option("rescuedDataColumn", "_rescued_data").format("csv").load(<path>)verileri okurken seçeneğini rescuedDataColumn bir sütun adı olarak ayarlayarak kurtarılan veri sütununu etkinleştirebilirsiniz.

CSV ayrıştırıcısı kayıtları ayrıştırırken üç modu destekler: PERMISSIVE, DROPMALFORMEDve FAILFAST. ile rescuedDataColumnbirlikte kullanıldığında, veri türü uyuşmazlıkları kayıtların modda DROPMALFORMED bırakılmasına veya modda hata FAILFAST oluşturmasına neden olmaz. Yalnızca bozuk kayıtlar (eksik veya hatalı biçimlendirilmiş CSV) bırakılır veya hata oluşturur.

rescuedDataColumn Modda PERMISSIVE kullanıldığında, bozuk kayıtlara aşağıdaki kurallar uygulanır:

  • Dosyanın ilk satırı (üst bilgi satırı veya veri satırı) beklenen satır uzunluğunu ayarlar.
  • Farklı sayıda sütuna sahip bir satır tamamlanmamış olarak kabul edilir.
  • Veri türü uyuşmazlıkları bozuk kayıtlar olarak kabul edilmez.
  • Yalnızca eksik ve hatalı biçimlendirilmiş CSV kayıtları bozuk olarak kabul edilir ve veya badRecordsPathsütununa _corrupt_record kaydedilir.

SQL örneği: CSV dosyasını okuma

Aşağıdaki SQL örneği kullanarak read_filesbir CSV dosyasını okur.

-- mode "FAILFAST" aborts file parsing with a RuntimeException if malformed lines are encountered
SELECT * FROM read_files(
  's3://<bucket>/<path>/<file>.csv',
  format => 'csv',
  header => true,
  mode => 'FAILFAST')

Scala, R ve Python örnekleri: CSV dosyasını okuma

Aşağıdaki not defterinde Scala, R ve Python kullanarak dosya okuma, örnek verileri görüntüleme ve veri şemasını yazdırma gösterilmektedir. Bu bölümdeki örneklerde elmas veri kümesi kullanılmıştır. Veri kümesinin yolunu ve istediğiniz seçenekleri belirtin.

CSV dosyaları not defterini okuma

Not defterini alma

Örnek: Şema belirtme

CSV dosyasının şeması bilindiğinde, seçeneğiyle CSV okuyucusunun istediği şemayı schema belirtebilirsiniz.

Şema not defteriyle CSV dosyalarını okuma

Not defterini alma

kullanan read_filesSQL örneği:

SELECT * FROM read_files(
  's3://<bucket>/<path>/<file>.csv',
  format => 'csv',
  header => false,
  schema => 'id string, date date, event_time timestamp')

Örnek: Sütunların bir alt kümesini okuma tuzakları

CSV ayrıştırıcısının davranışı, okunan sütun kümesine bağlıdır. Belirtilen şema yanlışsa, sonuçlar erişilen sütunların alt kümesine bağlı olarak önemli ölçüde farklılık gösterebilir. Aşağıdaki not defteri en yaygın tuzakları sunar.

CSV dosya not defterinin sütun alt kümesini okuma uyarıları

Not defterini alma