Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Artikel ini menyediakan contoh untuk membaca file CSV dengan Azure Databricks menggunakan Python, Scala, R, dan SQL.
Catatan
Databricks read_files merekomendasikan fungsi 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:
- Anda tidak dapat menentukan opsi sumber data.
- Anda tidak dapat menentukan skema untuk data.
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 yang ditentukan, ada kemungkinan bahwa 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
badRecordsPathuntuk mencatat rekaman yang cacat ke file. - Anda dapat menambahkan kolom
_corrupt_recordke skema yang disediakan ke DataFrameReader untuk meninjau rekaman yang rusak di DataFrame yang dihasilkan.
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 rusak berubah saat menggunakan kolom data yang dipulihkan .
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 PERMISSIVE mode , Anda dapat mengaktifkan kolom data yang diselamatkan untuk mengambil data apa pun yang tidak diurai karena satu atau beberapa bidang dalam rekaman memiliki salah satu masalah berikut:
- Tidak ada dalam skema yang disediakan.
- Tidak cocok dengan jenis data skema yang disediakan.
- Memiliki ketidakcocokan kasus dengan nama bidang 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 diselamatkan, Anda dapat mengatur konfigurasi SQL spark.conf.set("spark.databricks.sql.rescuedDataColumn.filePath.enabled", "false"). Anda dapat mengaktifkan kolom data yang diselamatkan dengan mengatur opsi rescuedDataColumn ke nama kolom saat membaca data, 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 yang berbeda dianggap tidak lengkap.
- Ketidakcocokan jenis data tidak akan dianggap sebagai rekaman yang rusak.
- Hanya rekaman CSV yang tidak lengkap dan salah format yang dianggap rusak dan direkam ke kolom
_corrupt_recordataubadRecordsPath.
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(
'abfss://<bucket>@<storage-account>.dfs.core.windows.net/<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
Ketika skema file CSV diketahui, Anda dapat menentukan skema yang diinginkan ke pembaca CSV dengan opsi schema.
Membaca file CSV dengan buku catatan skema
Dapatkan buku catatan
Contoh SQL menggunakan read_files:
SELECT * FROM read_files(
'abfss://<bucket>@<storage-account>.dfs.core.windows.net/<path>/<file>.csv',
format => 'csv',
header => false,
schema => 'id string, date date, event_time timestamp')
Contoh: Kesulitan membaca subset kolom
Perilaku pengurai CSV bergantung pada kumpulan kolom yang dibaca. Jika skema yang ditentukan salah, hasilnya mungkin jauh berbeda tergantung pada subset kolom yang diakses. Notebook berikut menyajikan perangkap yang paling umum.
Peringatan membaca subset kolom buku catatan file CSV
Dapatkan buku catatan