Bagikan melalui


Membaca file CSV

Artikel ini menyediakan contoh untuk membaca file CSV dengan Azure Databricks menggunakan Python, Scala, R, dan SQL.

Catatan

Databricks merekomendasikan fungsi read_files bernilai tabel bagi pengguna SQL untuk membaca file CSV. read_files tersedia di Databricks Runtime 13.3 LTS ke atas.

Anda juga dapat menggunakan tampilan sementara. Jika Anda menggunakan SQL untuk membaca data CSV secara langsung tanpa menggunakan tampilan sementara atau read_files, batasan berikut berlaku:

Opsi

Anda dapat mengonfigurasi beberapa opsi untuk sumber data file CSV. Lihat artikel referensi Apache Spark berikut ini untuk opsi baca yang didukung:

Artikel ini hanya membahas tentang membaca CSV, tetapi Anda dapat mempelajari tentang opsi tulis yang didukung di artikel referensi Apache Spark berikut ini:

Bekerja dengan catatan CSV yang cacat

Saat membaca file CSV dengan skema tertentu, ada kemungkinan data dalam file tidak cocok dengan skema. Misalnya, bidang yang berisi nama kota tidak akan mengurai sebagai bilangan bulat. Konsekuensinya tergantung pada mode yang dijalankan parser:

  • PERMISSIVE (default): null disisipkan untuk bidang yang tidak dapat diurai dengan benar
  • DROPMALFORMED: menjatuhkan garis yang berisi bidang yang tidak dapat diurai
  • FAILFAST: membatalkan pembacaan jika ada data yang salah ditemukan

Untuk mengatur mode, gunakan opsi mode.

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

Dalam mode PERMISSIVE, dimungkinkan untuk memeriksa baris yang tidak dapat diurai secara tepat dengan salah satu metode berikut ini:

  • Anda dapat menyediakan jalur kustom ke opsi badRecordsPath untuk mencatat rekaman yang cacat ke file.
  • Anda dapat menambahkan kolom _corrupt_record pada skema yang disediakan pada DataFrameReader guna meninjau rekaman yang cacat pada DataFrame hasilnya.

Catatan

Opsi badRecordsPath lebih penting dari _corrupt_record, yang berarti bahwa baris yang cacat dan ditulis pada jalur yang disediakan tidak ditampilkan pada DataFrame hasilnya.

Perilaku default untuk rekaman yang cacat berubah saat menggunakan kolom data yang diselamatkan.

Menemukan notebook baris yang cacat

Dapatkan buku catatan

Kolom data yang diselamatkan

Catatan

Fitur ini didukung di Databricks Runtime 8.3 (EoS) ke atas.

Saat menggunakan mode PERMISSIVE, Anda dapat mengaktifkan kolom data yang diselamatkan untuk mengambil setiap data yang tidak diurai, karena satu atau lebih bidang pada rekaman memiliki salah satu masalah berikut ini:

  • Tidak ada pada skema yang disediakan.
  • Tidak sesuai dengan jenis data skema yang disediakan.
  • Memiliki ketidakcocokan kasus dengan nama bidang di dalam skema yang disediakan.

Kolom data yang diselamatkan dikembalikan sebagai dokumen JSON yang berisi kolom yang diselamatkan, dan jalur file sumber rekaman. Untuk menghapus jalur file sumber dari kolom data yang disimpan, Anda dapat mengatur konfigurasi SQL spark.conf.set("spark.databricks.sql.rescuedDataColumn.filePath.enabled", "false"). Anda bisa mengaktifkan kolom data yang diselamatkan dengan mengatur opsi rescuedDataColumn ke nama kolom, seperti _rescued_data dengan spark.read.option("rescuedDataColumn", "_rescued_data").format("csv").load(<path>).

Pengurai CSV mendukung tiga mode saat mengurai baris: PERMISSIVE, DROPMALFORMED, dan FAILFAST. Ketika digunakan bersama dengan rescuedDataColumn, ketidakcocokan tipe data tidak menyebabkan catatan dijatuhkan dalam mode DROPMALFORMED atau melemparkan kesalahan dalam mode FAILFAST. Hanya baris yang rusak—yaitu CSV yang tidak lengkap atau cacat—yang dihilangkan atau menimbulkan kesalahan.

Saat rescuedDataColumn digunakan pada mode PERMISSIVE, aturan berikut ini berlaku pada rekaman yang cacat:

  • Baris pertama file (baik baris header atau baris data) akan mengatur panjang baris yang diharapkan.
  • Baris dengan jumlah kolom berbeda dianggap tidak lengkap.
  • Ketidakcocokan jenis data tidak akan dianggap sebagai rekaman yang rusak.
  • Hanya rekaman CSV tidak lengkap dan cacat yang dianggap rusak dan dicatat pada kolom _corrupt_record atau badRecordsPath.

Contoh SQL: Membaca file CSV

Contoh SQL berikut membaca file CSV menggunakan read_files.

-- 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')

Contoh Scala, R, dan Python: Membaca file CSV

Buku catatan berikut ini memperlihatkan cara membaca file, menampilkan data sampel, dan mencetak skema data menggunakan Scala, R, dan Python. Contoh di bagian ini menggunakan himpunan data berlian. Tentukan jalur ke himpunan data serta opsi apa pun yang Anda inginkan.

Membaca notebook file CSV

Dapatkan buku catatan

Contoh: Tentukan skema

Saat skema file CSV diketahui, Anda dapat menentukan skema yang diinginkan ke pembaca CSV dengan opsi schema tersebut.

Membaca file CSV dengan notebook skema

Dapatkan buku catatan

Contoh SQL menggunakan read_files:

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

Contoh: Jebakan membaca subset kolom

Perilaku parser CSV bergantung pada kumpulan kolom yang dibaca. Jika skema yang ditentukan salah, hasilnya mungkin sangat berbeda tergantung pada subset kolom yang diakses. Notebook berikut menyajikan perangkap yang paling umum.

Peringatan membaca subset kolom notebook file CSV

Dapatkan buku catatan