Referensi opsi Spark API

Halaman ini mencantumkan opsi input dan output yang tersedia untuk API Spark yang membaca dan menulis data.

Opsi DataFrameReader

Gunakan opsi ini dengan DataFrameReader.option(), DataFrameReader.options(), read_files, COPY INTO, dan Auto Loader untuk mengontrol cara Azure Databricks membaca file data.

Example

Contoh berikut diatur multiLine ke True untuk membaca file JSON:

Python
df = spark.read.format("json").option("multiLine", True).load("/path/to/data")
Scala
val df = spark.read.format("json").option("multiLine", "true").load("/path/to/data")
SQL
SELECT * FROM read_files("/path/to/data", format => "json", multiLine => true)

Umum

Opsi berikut berlaku untuk semua format file.

Key Default Description
ignoreCorruptFiles false Apakah akan mengabaikan file yang rusak. Jika true, pekerjaan Spark akan terus berjalan ketika menemukan file yang rusak dan konten yang telah dibaca akan tetap dikembalikan. Untuk COPY INTO, Anda dapat mengamati file rusak yang dilewati seperti numSkippedCorruptFiles di operationMetrics kolom riwayat Delta Lake. Tersedia di Databricks Runtime 11.3 LTS ke atas.
ignoreMissingFiles false untuk Auto Loader, true untuk COPY INTO (warisan) Apakah mengabaikan file yang hilang. Jika true, pekerjaan Spark terus berjalan saat menemukan file yang hilang dan konten masih dikembalikan. Tersedia di Databricks Runtime 11.3 LTS ke atas.
modifiedAfter Tidak Tanda waktu opsional sebagai filter untuk hanya memasukkan file yang memiliki tanda waktu modifikasi setelah tanda waktu yang disediakan.
modifiedBefore Tidak Cap waktu opsional sebagai filter untuk hanya memasukkan file yang memiliki cap waktu modifikasi sebelum cap waktu yang disediakan.
pathGlobFilter atau fileNamePattern Tidak Pola glob yang berpotensi digunakan untuk memilih file. Setara dengan PATTERN dalam COPY INTO (warisan). fileNamePattern dapat digunakan dalam read_files.
recursiveFileLookup false Ketika true, opsi ini mencari melalui direktori berlapis bahkan jika namanya tidak mengikuti skema penamaan partisi seperti date=2019-07-01.

Avro

Key Default Description
avroSchema Tidak Skema opsional yang disediakan oleh pengguna dalam format Avro. Saat membaca Avro, opsi ini dapat diatur ke skema berevolusi yang kompatibel tetapi berbeda dari skema Avro yang sebenarnya. Skema deserialisasi konsisten dengan skema yang berkembang. Misalnya, jika Anda mengatur skema yang berkembang yang berisi satu kolom tambahan dengan nilai default, hasil baca juga berisi kolom baru.
avroSchemaEvolutionMode none Cara menangani evolusi skema saat menggunakan registri skema. Nilai yang valid: none (abaikan perubahan skema dan lanjutkan pekerjaan), restart (ketika perubahan skema terdeteksi, menaikkan UnknownFieldException dan memerlukan restart pekerjaan).
datetimeRebaseMode LEGACY Mengontrol pengubahan dasar nilai TANGGAL dan CAP WAKTU antara kalender Julian dan Gregorian Proleptik. Nilai yang valid: EXCEPTION, LEGACY, dan CORRECTED.
enableStableIdentifiersForUnionType false Apakah akan menggunakan nama bidang stabil untuk jenis Avro Union. Saat diaktifkan, nama bidang jenis union berasal dari nama jenisnya dalam huruf kecil (misalnya, member_int, member_string). Memberikan pengecualian jika dua nama jenis identik setelah huruf kecil.
mergeSchema false Apakah ingin menentukan skema di beberapa file dan menggabungkan skema dari tiap file? mergeSchema untuk Avro tidak memperlonggar tipe data.
mode FAILFAST Mode pengurai untuk menangani rekaman yang rusak. Nilai yang valid: FAILFAST (melemparkan pengecualian), PERMISSIVE (mengatur bidang cacat ke null), DROPMALFORMED (secara diam-diam menjatuhkan rekaman buruk).
readerCaseSensitive true Menentukan perilaku sensitivitas huruf besar/kecil saat rescuedDataColumn diaktifkan. Jika true, selamatkan kolom data yang namanya berbeda menurut kasus dari skema. Saat false, baca data dengan cara yang tidak peka huruf besar/kecil.
recursiveFieldMaxDepth Tidak Kedalaman rekursi maksimum untuk bidang Avro rekursif. Atur ke 1 untuk memotong semua bidang rekursif, 2 untuk memungkinkan satu tingkat rekursi, dan seterusnya hingga 15. Saat bidang unset atau 0, rekursif tidak diizinkan. Nilai yang valid: 0 ke 15.
rescuedDataColumn Tidak Apakah perlu mengumpulkan semua data yang tidak dapat diurai karena ketidakcocokan tipe data dan ketidakcocokan skema (termasuk pengejaan kolom) ke dalam kolom terpisah. Kolom ini disertakan secara default saat menggunakan Auto Loader.
COPY INTO (warisan) tidak mendukung kolom data yang diselamatkan karena Anda tidak dapat mengatur skema secara manual menggunakan COPY INTO. Databricks merekomendasikan penggunaan Auto Loader untuk sebagian besar skenario penyerapan.
Untuk detail selengkapnya, lihat Apa itu kolom data yang diselamatkan?.
stableIdentifierPrefixForUnionType member_ Awalan yang digunakan untuk nama bidang tipe union stabil saat enableStableIdentifiersForUnionType=true.

CSV

Key Default Description
badRecordsPath Tidak Jalur untuk menyimpan file untuk merekam informasi tentang rekaman CSV yang salah.
charToEscapeQuoteEscaping \0 Karakter yang digunakan untuk menghindari karakter yang digunakan untuk menghindari tanda kutip. Misalnya, untuk rekaman berikut: [ " a\\", b ]:
  • Jika karakter untuk menghindari '\' tidak terdefinisi, catatan tidak akan diurai. Pengurai akan membaca karakter: [a],[\],["],[,],[ ],[b] dan menampilkan kesalahan karena tidak dapat menemukan kuotasi penutup.
  • Jika karakter untuk menghindari '\' didefinisikan sebagai '\', maka rekaman akan dibaca dengan 2 nilai: [a\] dan [b].
columnNameOfCorruptRecord _corrupt_record Didukung oleh Auto Loader. Tidak didukung untuk COPY INTO (versi lama).
Kolom untuk menyimpan rekaman yang rusak dan tidak dapat diurai. Jika mode untuk penguraian diset sebagai DROPMALFORMED, kolom ini akan kosong.
comment \0 Mendefinisikan karakter yang mewakili komentar baris ketika ditemukan di awal baris teks. Gunakan '\0' untuk menonaktifkan pelompatan komentar.
dateFormat yyyy-MM-dd Format untuk memproses string tanggal.
emptyValue String kosong Representasi string untuk nilai yang kosong.
enableDateTimeParsingFallback false Apakah akan kembali ke tanggal warisan dan perilaku penguraian tanda waktu ketika nilai tidak dapat diurai dengan format yang ditentukan. Ketika false, kegagalan penguraian menimbulkan kesalahan atau menghasilkan null tergantung pada mode.
encoding atau charset UTF-8 Nama pengodean file CSV. Lihat java.nio.charset.Charset untuk daftar opsi. UTF-16 dan UTF-32 tidak dapat digunakan saat multiline adalah true.
enforceSchema true Apakah akan menerapkan skema yang ditentukan atau disimpulkan secara paksa ke file CSV. Jika opsi diaktifkan, header file CSV akan diabaikan. Opsi ini diabaikan secara default saat menggunakan Auto Loader untuk menyelamatkan data dan memungkinkan evolusi skema.
escape \ Karakter escape untuk digunakan saat mengurai data.
extension csv Ekstensi nama file yang diharapkan. File tanpa ekstensi ini difilter selama pembacaan.
failOnUnknownFields false Apakah gagal ketika rekaman CSV berisi kolom yang tidak ada dalam skema. Ketika false, kolom yang tidak dikenal dihilangkan secara diam-diam atau diselamatkan tergantung pada rescuedDataColumn.
failOnWidenedFields false Apakah gagal ketika nilai bidang tidak dapat diurai sebagai jenis skema yang dideklarasikan tanpa pellebaran. Ketika false, nilai yang diperlebar jenis diselamatkan secara diam-diam tergantung pada rescuedDataColumn. Pengaturan failOnUnknownFields=true dapat menutupi efek opsi ini.
header false Apakah file CSV berisi tajuk? Auto Loader menganggap bahwa file memiliki judul saat menyimpulkan skema.
ignoreLeadingWhiteSpace false Apakah akan mengabaikan spasi di awal untuk setiap nilai yang diurai.
ignoreTrailingWhiteSpace false Apakah akan mengabaikan spasi kosong di akhir untuk setiap nilai hasil penguraian.
inferSchema false Apakah ingin menyimpulkan jenis data dari catatan CSV yang diurai atau mengasumsikan semua kolom berasal dari StringType. Memerlukan pemrosesan ulang data jika diset ke true. Untuk Auto Loader, gunakan cloudFiles.inferColumnTypes sebagai gantinya.
inputBufferSize 1048576 (1 MB) Ukuran buffer dalam byte untuk pengurai CSV. Berguna untuk menyetel penggunaan memori saat mengurai file CSV besar. Nilai yang valid: bilangan bulat positif.
lineSep Tidak ada, yang mencakup \r, \r\n, dan \n Deretan antara dua catatan CSV berturut-turut.
locale US Sebuah pengenal java.util.Locale. Memengaruhi tanggal default, stempel waktu, dan penguraian desimal dalam CSV.
maxCharsPerColumn -1 Jumlah maksimum karakter yang diharapkan dari sebuah nilai untuk dianalisis. Dapat digunakan untuk menghindari kesalahan memori. Pengaturan awal adalah -1, yang berarti tidak terbatas. Nilai yang valid: bilangan bulat positif, atau -1 untuk tidak terbatas.
maxColumns 20480 Batas tegas berapa banyak kolom yang dapat dimiliki sebuah catatan. Nilai yang valid: bilangan bulat positif.
mergeSchema false Apakah ingin menentukan skema di beberapa file dan menggabungkan skema dari tiap file? Diaktifkan secara default untuk Auto Loader saat menyimpulkan skema.
mode PERMISSIVE Mode parser untuk menangani rekaman yang rusak. Nilai yang valid: PERMISSIVE, DROPMALFORMED, FAILFAST.
multiLine false Apakah catatan CSV mencakup beberapa baris.
nanValue NaN Representasi string dari nilai yang bukan angka saat mengurai kolom FloatType dan DoubleType.
negativeInf -Inf Representasi string dari infinitas negatif saat mengurai kolom FloatType atau DoubleType.
nullValue String kosong Representasi string dari suatu nilai yang null.
parserCaseSensitive (tidak digunakan lagi) false Saat membaca file, apakah akan menyelaraskan kolom yang dideklarasikan di header dengan kasus skema secara sensitif. true adalah pilihan default untuk Auto Loader. Kolom yang berbeda menurut kasus akan dipulihkan di rescuedDataColumn jika diaktifkan. Opsi ini tidak digunakan lagi dan digantikan dengan readerCaseSensitive.
positiveInf Inf Representasi string dari infinitas positif ketika mengurai kolom FloatType atau DoubleType.
preferDate true Mencoba menyimpulkan string sebagai tanggal alih-alih tanda waktu jika memungkinkan. Anda juga harus menggunakan inferensi skema, baik dengan mengaktifkan inferSchema atau menggunakan cloudFiles.inferColumnTypes dengan Auto Loader.
quote " Karakter yang digunakan untuk menghindari nilai-nilai di mana pemisah bidang adalah bagian dari nilai tersebut.
readerCaseSensitive true Menentukan perilaku sensitivitas huruf besar/kecil saat rescuedDataColumn diaktifkan. Jika true, selamatkan kolom data yang namanya berbeda menurut kasus dari skema. Saat false, baca data dengan cara yang tidak peka huruf besar/kecil.
rescuedDataColumn Tidak Apakah perlu mengumpulkan semua data yang tidak dapat diurai karena ketidakcocokan tipe data dan ketidakcocokan skema (termasuk pengejaan kolom) ke dalam kolom terpisah. Kolom ini disertakan secara default saat menggunakan Auto Loader. Untuk detail selengkapnya, lihat Apa itu kolom data yang diselamatkan?.
COPY INTO (warisan) tidak mendukung kolom data yang diselamatkan karena Anda tidak dapat mengatur skema secara manual menggunakan COPY INTO. Databricks merekomendasikan penggunaan Auto Loader untuk sebagian besar skenario penyerapan.
sep atau delimiter , String pemisah antar kolom.
singleVariantColumn Tidak Saat diatur ke nama kolom, membaca seluruh rekaman CSV ke dalam satu VariantType kolom dengan nama tersebut alih-alih mengurai setiap bidang ke dalam kolomnya sendiri. Membutuhkan header=true.
skipRows 0 Jumlah baris dari awal file CSV yang harus diabaikan (termasuk baris yang dikomentari dan kosong). Jika header bernilai benar, header akan menjadi baris pertama yang tidak dilompati dan tidak dikomentari. Nilai yang valid: bilangan bulat positif atau 0.
timeFormat HH:mm:ss Format untuk mengurai TimeType nilai kolom.
timestampFormat yyyy-MM-dd'T'HH:mm:ss[.SSS][XXX] Format untuk memproses string penanda waktu.
timestampNTZFormat yyyy-MM-dd'T'HH:mm:ss[.SSS] Format untuk mengurai tanda waktu tanpa string zona waktu (TimestampNTZType).
timeZone Tidak java.time.ZoneId untuk digunakan saat menguraikan stempel waktu dan tanggal.
unescapedQuoteHandling STOP_AT_DELIMITER Strategi untuk menangani tanda kutip yang belum di-escape. Opsi yang diizinkan:
  • STOP_AT_CLOSING_QUOTE: Jika tanda kutip tanpa pelindung ditemukan dalam input, kumpulkan karakter tanda kutip dan lanjutkan memproses nilai sebagai nilai yang dikutip, sampai tanda kutip penutup ditemukan.
  • BACK_TO_DELIMITER: Jika tanda kutip yang tidak di-escape ditemukan dalam input, anggap nilainya sebagai nilai tanpa tanda kutip. Ini akan membuat pengurai mengumpulkan semua karakter dari nilai yang diurai saat ini sampai pemisah yang ditentukan oleh sep ditemukan. Jika tidak ada pemisah yang ditemukan dalam nilai, pengurai akan terus mengumpulkan karakter dari input sampai pemisah atau akhir garis ditemukan.
  • STOP_AT_DELIMITER: Jika tanda kutip yang tidak di-escape ditemukan dalam input, anggap nilainya sebagai nilai tanpa tanda kutip. Ini akan membuat parser mengumpulkan semua karakter hingga ditemukan pemisah yang ditentukan oleh sep, atau akhir baris ditemukan dalam input.
  • SKIP_VALUE: Jika tanda kutip yang tidak diabaikan ditemukan dalam input, konten yang diurai untuk nilai yang diberikan akan diabaikan (sampai pemisah berikutnya ditemukan) dan nilai yang ditetapkan dalam nullValue akan digunakan.
  • RAISE_ERROR: Jika tanda kutip yang tidak dilewati ditemukan dalam input, akan TextParsingException dilemparkan.

Excel

Key Default Description
dataAddress Tidak Rentang sel yang akan dibaca dalam sintaks Excel. Jika dihilangkan, membaca semua sel yang valid dari lembar pertama. Gunakan "SheetName!C5:H10" untuk membaca rentang dari lembar bernama, "C5:H10" untuk membaca rentang dari lembar pertama, atau "SheetName" untuk membaca semua data dari lembar tertentu.
headerRows 0 Jumlah baris awal yang akan digunakan sebagai header nama kolom. Ketika dataAddress ditentukan, ini berlaku dalam rentang sel. Ketika 0, nama kolom dibuat secara otomatis sebagai _c1, , _c2, _c3dll. Nilai yang valid: 0, 1.
ignoreMissingSheet false Apakah akan secara diam-diam melewati file yang tidak berisi lembar yang ditentukan oleh dataAddress. Ketika false, kesalahan dilemparkan jika file kehilangan lembar yang diminta. Hanya berlaku ketika nama lembar ditentukan dalam dataAddress. Nilai yang valid: true, false.
includePhoneticRuns false Apakah akan menyertakan anotasi fonetik (seperti pinyin atau furigana) yang digabungkan ke nilai string sel saat membaca file XLSX. Nilai yang valid: true, false.
operation readSheet Operasi yang akan dilakukan pada buku kerja Excel. Nilai yang valid: readSheet (membaca data dari lembar), listSheets (mengembalikan struct dengan bidang sheetIndex: long dan sheetName: String untuk setiap lembar).
timestampNTZFormat yyyy-MM-dd'T'HH:mm:ss[.SSS] String format kustom untuk nilai timestamp-without-timezone yang disimpan sebagai string dalam Excel. Format tanggal kustom mengikuti format pada pola Tanggalwaktu.
dateFormat yyyy-MM-dd String format kustom untuk nilai string yang dibaca sebagai Date. Format tanggal kustom mengikuti format pada pola Tanggalwaktu.

JSON

Key Default Description
allowBackslashEscapingAnyCharacter false Apakah akan mengizinkan backslash untuk menghindari karakter yang mengikutinya. Jika tidak diaktifkan, hanya karakter yang secara eksplisit terdaftar oleh spesifikasi JSON yang dapat lolos.
allowComments false Apakah akan mengizinkan penggunaan komentar gaya Java, C, dan C ++ ('/', '*'dan '//' varietas) dalam konten yang diurai atau tidak.
allowNonNumericNumbers true Apakah akan mengizinkan penggunaan kumpulan token bukan angka (not-a-number) (NaN) sebagai nilai bilangan mengambang yang sah.
allowNumericLeadingZeros false Apakah akan mengizinkan angka integral dimulai dengan nol tambahan (dapat diabaikan) (misalnya, 000001).
allowSingleQuotes true Apakah akan mengizinkan penggunaan tanda kutip tunggal (apostrof, karakter '\') untuk mengutip string (nama dan nilai String).
allowUnquotedControlChars false Apakah akan mengizinkan string JSON berisi karakter kontrol yang tidak di-escape (karakter ASCII dengan nilai kurang dari 32, termasuk karakter tab dan karakter pemisah baris) atau tidak.
allowUnquotedFieldNames false Apakah akan mengizinkan penggunaan nama bidang yang tidak dikutip, yang diizinkan oleh JavaScript, tetapi tidak oleh spesifikasi JSON.
alternateVariantEncoding Tidak Pengodean yang digunakan untuk nilai Varian di JSON sumber. Atur ke Z85 untuk mendekode nilai Varian yang telah dikodekan Base85 alih-alih disimpan sebagai JSON sebaris.
badRecordsPath Tidak Jalur untuk menyimpan file untuk mencatat informasi tentang rekam JSON yang rusak.
badRecordsPath Menggunakan opsi dalam sumber data berbasis file memiliki batasan berikut:
  • Ini tidak transaksional dan dapat menyebabkan hasil yang tidak konsisten.
  • Kesalahan sementara diperlakukan sebagai kegagalan.
columnNameOfCorruptRecord _corrupt_record Kolom untuk menyimpan rekaman yang rusak dan tidak dapat diurai. Jika mode untuk penguraian diset sebagai DROPMALFORMED, kolom ini akan kosong.
dateFormat yyyy-MM-dd Format untuk memproses string tanggal.
dropFieldIfAllNull false Apakah akan mengabaikan kolom yang berisi semua nilai null atau array dan struktur kosong selama inferensi skema.
encoding atau charset UTF-8 Nama pengodean file JSON. Lihat java.nio.charset.Charset untuk daftar opsi. Anda tidak dapat menggunakan UTF-16 dan UTF-32 saat multiline adalah true.
inferTimestamp false Apakah akan mencoba menginterpretasikan teks tanda waktu sebagai TimestampType. Ketika diatur ke true, inferensi skema mungkin memakan waktu jauh lebih lama. Anda harus mengaktifkan cloudFiles.inferColumnTypes untuk digunakan dengan Auto Loader.
lineSep Tidak ada, yang mencakup \r, \r\n, dan \n Sebuah string di antara dua catatan JSON berurutan.
locale US Sebuah pengenal java.util.Locale. Memengaruhi tanggal default, cap waktu, dan pemrosesan desimal dalam JSON.
maxNestingDepth 500 Kedalaman berlapis maksimum yang diizinkan untuk objek dan array JSON. Tingkatkan nilai ini untuk dokumen berlapis dalam. Nilai yang valid: bilangan bulat positif.
maxNumLen 1000 Panjang maksimum token angka dalam input JSON. Tingkatkan nilai ini untuk JSON dengan literal numerik besar. Nilai yang valid: bilangan bulat positif.
maxStringLen Unlimited Panjang maksimum nilai string dalam input JSON. Atur untuk membatasi penggunaan memori saat mengurai JSON dengan string besar. Nilai yang valid: bilangan bulat positif.
mode PERMISSIVE Mode parser untuk menangani rekaman yang rusak. Nilai yang valid: PERMISSIVE, DROPMALFORMED, FAILFAST.
multiLine false Apakah catatan JSON mencakup beberapa baris.
prefersDecimal false Mencoba menyimpulkan string sebagai DecimalType alih-alih tipe float atau double jika memungkinkan. Anda juga harus menggunakan inferensi skema, baik dengan mengaktifkan inferSchema atau menggunakan cloudFiles.inferColumnTypes dengan Auto Loader.
primitivesAsString false Apakah perlu menyimpulkan tipe data primitif seperti angka dan boolean sebagai StringType.
readerCaseSensitive true Menentukan perilaku sensitivitas huruf besar/kecil saat rescuedDataColumn diaktifkan. Jika true, selamatkan kolom data yang namanya berbeda menurut kasus dari skema. Saat false, baca data dengan cara yang tidak peka huruf besar/kecil. Tersedia di Databricks Runtime 13.3 ke atas.
rescuedDataColumn Tidak Apakah akan mengumpulkan semua data yang tidak dapat diurai karena ketidakcocokan tipe data atau ketidakcocokan skema (termasuk casing kolom) ke kolom terpisah. Kolom ini disertakan secara default saat menggunakan Auto Loader. Untuk detail selengkapnya, lihat Apa itu kolom data yang diselamatkan?.
COPY INTO (warisan) tidak mendukung kolom data yang diselamatkan karena Anda tidak dapat mengatur skema secara manual menggunakan COPY INTO. Databricks merekomendasikan penggunaan Auto Loader untuk sebagian besar skenario penyerapan.
singleVariantColumn Tidak Apakah akan menyerap seluruh dokumen JSON, diurai ke dalam satu kolom Varian dengan string yang ditentukan sebagai nama kolom. Jika tidak diatur, bidang JSON diserap ke dalam kolomnya sendiri. Nilai yang valid: string apa pun.
timestampFormat yyyy-MM-dd'T'HH:mm:ss[.SSS][XXX] Format untuk memproses string penanda waktu.
timestampNTZFormat yyyy-MM-dd'T'HH:mm:ss[.SSS] Format untuk mengurai tanda waktu tanpa string zona waktu (TimestampNTZType).
timeZone Tidak java.time.ZoneId untuk digunakan saat menguraikan stempel waktu dan tanggal.
upgradeExceptionAsBadRecord false Apakah akan memperlakukan pengecualian peningkatan jenis (misalnya, ketika nilai tidak dapat dilebarkan ke jenis kolom yang dideklarasikan) sebagai rekaman buruk daripada melempar pengecualian.

Kafka

Untuk daftar lengkap opsi pembaca Kafka, lihat Opsi Kafka DataStreamReader. Opsi berikut hanya berlaku untuk pembacaan batch menggunakan spark.read.format("kafka").

Key Default Description
endingOffsets latest Di mana berhenti membaca. Nilai yang valid: latest, atau string offset JSON untuk setiap partisi seperti {"topicA":{"0":50,"1":-1}}.
Dalam string JSON, -1 adalah offset terbaru. -2, yang merupakan offset paling awal, tidak diizinkan sebagai offset akhir.
endingOffsetsByTimestamp Tidak Offset akhir per partisi ditentukan sebagai tanda waktu dalam milidetik. Nilai yang valid: string tanda waktu JSON untuk setiap partisi, seperti {"topicA":{"0":2000,"1":3000}}.
endingTimestamp Tidak Tanda waktu akhir global dalam milidetik diterapkan ke semua partisi. Nilai yang valid: bilangan bulat non-negatif.

ORC

Key Default Description
mergeSchema false Apakah ingin menentukan skema di beberapa file dan menggabungkan skema dari tiap file?

Parket

Key Default Description
datetimeRebaseMode LEGACY Mengontrol pengubahan dasar nilai TANGGAL dan CAP WAKTU antara kalender Julian dan Gregorian Proleptik. Nilai yang valid: EXCEPTION, LEGACY, dan CORRECTED.
int96RebaseMode LEGACY Mengontrol pengubahan basis nilai cap waktu INT96 antara kalender Julian dan kalender Gregorian Proleptik. Nilai yang valid: EXCEPTION, LEGACY, dan CORRECTED.
mergeSchema false Apakah ingin menentukan skema di beberapa file dan menggabungkan skema dari tiap file?
readerCaseSensitive true Menentukan perilaku sensitivitas huruf besar/kecil saat rescuedDataColumn diaktifkan. Jika true, selamatkan kolom data yang namanya berbeda menurut kasus dari skema. Saat false, baca data dengan cara yang tidak peka huruf besar/kecil.
rescuedDataColumn Tidak Apakah perlu mengumpulkan semua data yang tidak dapat diurai karena ketidakcocokan tipe data dan ketidakcocokan skema (termasuk pengejaan kolom) ke dalam kolom terpisah. Kolom ini disertakan secara default saat menggunakan Auto Loader. Untuk detail selengkapnya, lihat Apa itu kolom data yang diselamatkan?.
COPY INTO (warisan) tidak mendukung kolom data yang diselamatkan karena Anda tidak dapat mengatur skema secara manual menggunakan COPY INTO. Databricks merekomendasikan penggunaan Auto Loader untuk sebagian besar skenario penyerapan.

Penyimpanan status

Gunakan opsi ini dengan spark.read.format("statestore") atau fungsi bernilai read_statestore tabel untuk membaca data status Streaming Terstruktur. Lihat Baca informasi status Streaming Terstruktur.

Key Default Description
batchId ID batch terbaru Batch target untuk dibaca. Gunakan untuk mengkueri status kueri sebelumnya. Batch harus dikomitmenkan tetapi belum dibersihkan. Nilai yang valid: bilangan bulat non-negatif.
operatorId 0 Operator target yang akan dibaca. Gunakan saat kueri memiliki beberapa operator stateful. Nilai yang valid: bilangan bulat non-negatif.
storeName DEFAULT Nama penyimpanan status target untuk dibaca. Gunakan saat operator stateful memiliki beberapa instans penyimpanan status. Anda harus menentukan atau storeNamejoinSide untuk gabungan stream-stream, tetapi tidak keduanya. Nilai yang valid: string apa pun.
joinSide Tidak Sisi target untuk dibaca dari untuk gabungan stream-stream. Anda harus menentukan atau storeNamejoinSide untuk gabungan stream-stream, tetapi tidak keduanya. Nilai yang valid: left, right.
snapshotStartBatchId Tidak ID batch rekam jepret yang akan digunakan sebagai titik awal saat membaca status. Pembaca membangun kembali status dengan memutar ulang perubahan dari rekam jepret ini hingga batchId. Berguna saat rekam jepret rusak. Harus menentukan bersama dengan snapshotPartitionId. Tidak dapat menggunakan dengan readChangeFeed. Mendukung penyimpanan status yang didukung HDFS dan penyimpanan status RocksDB dengan titik pemeriksaan changelog diaktifkan. Tersedia di Databricks Runtime 15.4 LTS ke atas. Nilai yang valid: bilangan bulat non-negatif.
snapshotPartitionId Tidak Jika ditentukan, kueri hanya membaca partisi ini. Harus menentukan bersama dengan snapshotStartBatchId. Tidak dapat menggunakan dengan readChangeFeed. Tersedia di Databricks Runtime 15.4 LTS ke atas. Nilai yang valid: bilangan bulat non-negatif.
readChangeFeed false Ketika true, mengembalikan perubahan status di seluruh rentang batch tertentu antara changeStartBatchId dan changeEndBatchId. Membutuhkan changeStartBatchId. Tidak dapat menggunakan dengan joinSide, batchId, snapshotStartBatchId, atau snapshotPartitionId. Tersedia di Databricks Runtime 16.4 LTS ke atas. Nilai yang valid: true, false.
Untuk detailnya, lihat Membaca perubahan status Streaming Terstruktur.
changeStartBatchId Tidak ID batch awal untuk rentang umpan perubahan. Diperlukan saat readChangeFeed adalah true. Hanya berlaku ketika readChangeFeed diatur ke true. Tersedia di Databricks Runtime 16.4 LTS ke atas. Nilai yang valid: bilangan bulat non-negatif.
changeEndBatchId ID batch terbaru ID batch akhir untuk rentang umpan perubahan. Harus lebih besar dari atau sama dengan changeStartBatchId. Hanya berlaku ketika readChangeFeed diatur ke true. Tersedia di Databricks Runtime 16.4 LTS ke atas. Nilai yang valid: bilangan bulat non-negatif.
stateVarName Tidak Nama variabel status yang akan dibaca. Nama variabel status adalah nama unik dari setiap variabel dalam init fungsi yang StatefulProcessor digunakan oleh transformWithState operator. Diperlukan saat Anda menggunakan transformWithState operator. Tersedia di Databricks Runtime 16.4 LTS ke atas. Nilai yang valid: string apa pun.
readRegisteredTimers false Ketika true, membaca timer terdaftar yang digunakan oleh transformWithState operator. Hanya berlaku untuk transformWithState operator. Tersedia di Databricks Runtime 16.4 LTS ke atas. Nilai yang valid: true, false.
flattenCollectionTypes true Ketika true, meratakan rekaman yang dikembalikan untuk variabel status peta dan daftar. Ketika false, mengembalikan rekaman sebagai Spark SQL Array atau Map. Hanya berlaku untuk transformWithState operator. Tersedia di Databricks Runtime 16.4 LTS ke atas. Nilai yang valid: true, false.

Teks

Key Default Description
encoding UTF-8 Nama pengodean pemisah baris dalam file TEKS. Untuk daftar opsi, lihat java.nio.charset.Charset. Konten file tidak terpengaruh oleh opsi ini dan dibaca as-is.
lineSep Tidak ada, yang mencakup \r, \r\n dan \n Sebuah string di antara dua catatan TEXT berturut-turut.
wholeText false Apakah akan membaca berkas sebagai satu rekaman.

XML

Key Default Description
rowTag Tidak Tag baris pada file XML untuk diperlakukan sebagai baris. Dalam contoh XML <books> <book><book>...<books>, nilai yang sesuai adalah book. Opsi ini wajib diisi.
samplingRatio 1.0 Menentukan sebagian kecil baris yang digunakan untuk inferensi skema. Fungsi bawaan XML mengabaikan opsi ini. Nilai yang valid: 0.0 ke 1.0.
excludeAttribute false Apakah akan mengecualikan atribut dalam elemen.
mode Tidak Mode untuk menangani rekaman yang rusak selama penguraian. PERMISSIVE: Untuk rekaman yang rusak, menempatkan string yang rusak ke dalam bidang yang dikonfigurasi oleh columnNameOfCorruptRecord, dan menetapkan nilai null untuk bidang yang cacat. Untuk menyimpan rekaman yang rusak, Anda bisa mengatur bidang dengan jenis string bernama columnNameOfCorruptRecord dalam skema yang ditentukan pengguna. Jika skema tidak memiliki bidang , rekaman yang rusak akan dihilangkan selama penguraian. Saat menyimpulkan skema, pengurai secara implisit menambahkan bidang columnNameOfCorruptRecord ke dalam skema output. DROPMALFORMED: Mengabaikan rekaman yang rusak. Mode ini tidak didukung untuk fungsi bawaan XML. FAILFAST: Memunculkan pengecualian ketika pengurai menemui rekaman yang rusak.
inferSchema true Jika true, mencoba menyimpulkan jenis yang sesuai untuk setiap kolom DataFrame yang dihasilkan. Jika false, semua kolom yang dihasilkan berjenis string . Fungsi bawaan XML mengabaikan opsi ini.
columnNameOfCorruptRecord spark.sql.columnNameOfCorruptRecord Memungkinkan penggantian nama bidang baru yang berisi string cacat yang dibuat oleh PERMISSIVE mode.
attributePrefix Tidak Awalan untuk atribut untuk membedakan atribut dari elemen. Ini akan menjadi awalan untuk nama bidang. Defaultnya adalah _. Bisa kosong untuk membaca XML, tetapi tidak untuk menulis. Juga berlaku untuk opsi XML DataFrameWriter.
valueTag _VALUE Tag yang digunakan untuk data karakter dalam elemen yang juga memiliki elemen atribut atau elemen turunan. Pengguna dapat menentukan valueTag bidang dalam skema atau akan ditambahkan secara otomatis selama inferensi skema ketika data karakter ada dalam elemen dengan elemen atau atribut lain. Juga berlaku untuk opsi XML DataFrameWriter.
encoding UTF-8 Untuk membaca, dekode file XML dengan jenis pengodean yang diberikan. Untuk menulis, menentukan pengodean (charset) file XML yang disimpan. Fungsi bawaan XML mengabaikan opsi ini. Juga berlaku untuk opsi XML DataFrameWriter.
ignoreSurroundingSpaces true Apakah spasi kosong di sekitar nilai harus dilewati. Data karakter yang hanya berisi spasi kosong diabaikan.
rowValidationXSDPath Tidak Jalur ke file XSD opsional yang digunakan untuk memvalidasi XML untuk setiap baris satu per satu. Baris yang gagal divalidasi diperlakukan seperti kesalahan penguraian. XSD tidak memengaruhi skema, baik yang disediakan atau disimpulkan.
ignoreNamespace false Jika true, awalan namespace pada elemen dan atribut XML diabaikan. Tag <abc:author> dan <def:author>, misalnya, diperlakukan seolah-olah keduanya adalah <author> saja. Namespace-namespace tidak dapat diabaikan pada elemen rowTag, hanya elemen turunannya yang dapat dibaca. Penguraian XML tidak mengenali namespace walaupun false.
timestampFormat yyyy-MM-dd'T'HH:mm:ss[.SSS][XXX] Format string tanda waktu kustom yang mengikuti format pola tanggal dan waktu. Ini berlaku untuk jenis timestamp ini. Juga berlaku untuk opsi XML DataFrameWriter.
timestampNTZFormat yyyy-MM-dd'T'HH:mm:ss[.SSS] Format string khusus untuk tanda waktu tanpa zona waktu yang mengikuti format pola tanggal dan waktu. Ini berlaku untuk jenis TimestampNTZType. Juga berlaku untuk opsi XML DataFrameWriter.
dateFormat yyyy-MM-dd String format tanggal kustom yang mengikuti format pola tanggal dan waktu. Ini berlaku untuk jenis tanggal. Juga berlaku untuk opsi XML DataFrameWriter.
locale en-US Mengatur lokal sebagai tag bahasa dalam format IETF BCP 47. Misalnya, locale digunakan saat mengurai tanggal dan tanda waktu.
nullValue tali null Mengatur representasi string dari nilai null. Ketika ini adalah null, pengurai tidak menulis atribut dan elemen untuk bidang. Juga berlaku untuk opsi XML DataFrameWriter.
readerCaseSensitive true Menentukan perilaku sensitivitas kasus saat rescuedDataColumn diaktifkan. Jika true, selamatkan kolom data yang namanya berbeda menurut kasus dari skema. Saat false, baca data dengan cara yang tidak peka huruf besar/kecil.
rescuedDataColumn Tidak Apakah akan mengumpulkan semua data yang tidak dapat diurai karena ketidakcocokan jenis data dan ketidakcocokan skema (termasuk casing kolom) ke kolom terpisah. Kolom ini disertakan secara default saat menggunakan Auto Loader. Untuk detail selengkapnya, lihat Apa itu kolom data yang diselamatkan?. COPY INTO (warisan) tidak mendukung kolom data yang diselamatkan karena Anda tidak dapat mengatur skema secara manual menggunakan COPY INTO. Databricks merekomendasikan penggunaan Auto Loader untuk sebagian besar skenario penyerapan.
singleVariantColumn none Menentukan nama untuk kolom dengan satu varian. Jika opsi ini ditentukan untuk dibaca, uraikan seluruh catatan XML ke dalam satu kolom Varian dengan nilai string opsi yang diberikan sebagai nama kolom. Jika opsi ini disediakan untuk menulis, tulis nilai kolom Varian tunggal ke file XML. Juga berlaku untuk opsi XML DataFrameWriter.
useLegacyXMLParser true Apakah akan menggunakan pengurai XML warisan. Parser warisan memiliki validasi yang kurang ketat untuk konten cacat tetapi kurang efisien memori. Atur ke false untuk memilih pengurai default yang lebih ketat.
wildcardColName xs_any Nama kolom yang digunakan untuk mengambil elemen XML yang cocok dengan elemen skema wildcard (xs:any). Tidak dapat digunakan bersama dengan rescuedDataColumn.

Opsi DataStreamReader

Gunakan opsi ini dengan DataStreamReader.option() untuk mengonfigurasi pembacaan streaming dari tabel Delta Lake dan sumber berbasis file lainnya.

Untuk opsi format file (JSON, CSV, Parquet, dan lainnya), lihat Opsi DataFrameReader.

Untuk opsi Auto Loader (cloudFiles.*), lihat Auto Loader.

Example

Contoh berikut diatur maxFilesPerTrigger ke 10 untuk aliran tabel Delta Lake:

Python
df = spark.readStream.format("delta").option("maxFilesPerTrigger", 10).load("/path/to/delta-table")
Scala
val df = spark.readStream.format("delta").option("maxFilesPerTrigger", "10").load("/path/to/delta-table")

Umum

Opsi berikut berlaku untuk tabel Delta Lake dan sumber streaming berbasis file lainnya.

Key Default Description
cleanSource off Cara menangani file sumber setelah diproses oleh aliran. Nilai yang valid: off (tidak ada tindakan), delete (hapus file sumber secara permanen), archive (pindah ke sourceArchiveDir). Ketika diatur ke archive, sourceArchiveDir juga harus diatur. Tidak berlaku untuk streaming tabel Delta Lake.
fileNameOnly false Apakah akan mengidentifikasi file yang sudah diproses dengan nama file saja daripada dengan jalur lengkap. Ketika true, file di jalur yang berbeda dengan nama file yang sama diperlakukan sebagai file yang sama dan tidak diolah ulang. Tidak berlaku untuk streaming tabel Delta Lake.
latestFirst false Apakah akan memproses file yang terakhir dimodifikasi terlebih dahulu dalam setiap mikro-batch. Berguna ketika Anda ingin memproses data terbaru secepat mungkin. Ketika true dan maxFilesPerTrigger atau maxBytesPerTrigger diatur, maxFileAge diabaikan. Tidak berlaku untuk streaming tabel Delta Lake.
maxBytesPerTrigger Tidak Maksimum lunak untuk jumlah data yang diproses untuk setiap mikro-batch. Batch dapat memproses lebih dari batas jika unit input terkecil melebihinya. Ketika digunakan bersama dengan maxFilesPerTrigger, mikro-batch memproses data hingga salah satu batas tercapai terlebih dahulu. Nilai yang valid: bilangan bulat positif.
Untuk Auto Loader, gunakan cloudFiles.maxBytesPerTrigger sebagai gantinya. Lihat Umum.
maxCachedFiles 10000 Jumlah maksimum file yang tidak diolah ke cache untuk batch mikro berikutnya. Atur ke 0 untuk menonaktifkan penembolokan. Tingkatkan nilai ini ketika direktori sumber berisi banyak file baru untuk setiap pemicu. Tidak berlaku untuk streaming tabel Delta Lake. Nilai yang valid: bilangan bulat positif atau 0.
maxFileAge 7d Usia maksimum file yang dipertimbangkan untuk diproses, relatif terhadap tanda waktu file yang terakhir dimodifikasi daripada waktu sistem saat ini. File yang lebih lama dari ambang ini diabaikan. Menerima string durasi seperti 7d atau 4h. Diabaikan ketika latestFirst dan maxFilesPerTriggertrue atau maxBytesPerTrigger diatur. Tidak berlaku untuk streaming tabel Delta Lake.
maxFilesPerTrigger 1000 untuk Delta Lake dan Auto Loader. Tidak ada maksimum untuk sumber berbasis file lainnya. Batas atas untuk jumlah file baru yang diproses di setiap mikro-batch. Ketika digunakan bersama dengan maxBytesPerTrigger, mikro-batch memproses data hingga salah satu batas tercapai terlebih dahulu. Nilai yang valid: bilangan bulat positif.
Untuk Auto Loader, gunakan cloudFiles.maxFilesPerTrigger sebagai gantinya. Lihat Umum.
sourceArchiveDir Tidak Jalur ke direktori arsip saat cleanSource diatur ke archive. File sumber dipindahkan ke jalur ini setelah diproses, mempertahankan struktur direktori relatifnya. Tidak berlaku untuk streaming tabel Delta Lake.

Pemuat Otomatis

Gunakan opsi ini dengan cloudFiles sumber untuk mengonfigurasi Auto Loader untuk penyerapan streaming dari penyimpanan cloud. Opsi khusus untuk cloudFiles sumber diawali dengan cloudFiles untuk menyimpannya di namespace terpisah dari opsi sumber Streaming Terstruktur lainnya.

Umum

Key Default Description
cloudFiles.allowOverwrites false Apakah mengizinkan perubahan file direktori input mengganti data yang ada.
Untuk peringatan konfigurasi, lihat Apakah Auto Loader memproses file lagi saat file ditambahkan atau ditimpa?.
cloudFiles.backfillInterval Tidak Auto Loader dapat memicu backfill asinkron pada interval tertentu. Misalnya 1 day untuk mengisi kekosongan setiap hari atau 1 week untuk mengisi kekosongan setiap minggu. Untuk informasi selengkapnya, lihat Melakukan pengisian kembali secara teratur menggunakan cloudFiles.backfillInterval.
Jangan gunakan ketika cloudFiles.useManagedFileEvents diatur ke true.
cloudFiles.cleanSource OFF Apakah akan menghapus file yang diproses secara otomatis dari direktori input. Ketika diatur ke OFF (default), tidak ada file yang dihapus.
Saat diatur ke DELETE, Auto Loader secara otomatis menghapus file 30 hari setelah diproses. Untuk melakukan ini, Auto Loader harus memiliki izin tulis ke direktori sumber.
Saat diatur ke MOVE, Auto Loader secara otomatis memindahkan file ke lokasi yang ditentukan dalam 30 hari setelah diproses cloudFiles.cleanSource.moveDestination . Untuk melakukan ini, Auto Loader harus memiliki izin tulis ke direktori sumber serta ke lokasi pemindahan.
File dianggap diproses ketika memiliki nilai non-null untuk commit_time dalam hasil cloud_files_state fungsi bernilai tabel. Lihat fungsi bernilai tabel cloud_files_state. Penantian tambahan 30 hari setelah pemrosesan dapat dikonfigurasi menggunakan cloudFiles.cleanSource.retentionDuration.
Tinjau pertimbangan berikut sebelum mengaktifkan cloudFiles.cleanSource:
  • Azure Databricks tidak merekomendasikan penggunaan opsi ini jika ada beberapa aliran yang menggunakan data dari lokasi sumber karena konsumen tercepat akan menghapus file dan tidak akan diserap di sumber yang lebih lambat.
  • Mengaktifkan fitur ini mengharuskan Auto Loader untuk mempertahankan status tambahan dalam titik pemeriksaannya, yang menimbulkan overhead performa tetapi memungkinkan pengamatan yang ditingkatkan melalui cloud_files_state fungsi bernilai tabel. Lihat fungsi bernilai tabel cloud_files_state.
  • cleanSource menggunakan pengaturan saat ini untuk memutuskan apakah ke MOVE atau DELETE file tertentu. Misalnya, misalkan bahwa pengaturan adalah MOVE ketika file awalnya diproses tetapi diubah menjadi DELETE ketika file menjadi kandidat untuk pembersihan 30 hari kemudian. Dalam hal ini, cleanSource akan menghapus file.
  • File tidak dijamin akan dibersihkan segera setelah kedaluwarsa retentionDuration . Untuk menjaga biaya tetap rendah, Auto Loader menghapus file secara bersamaan dengan pemrosesan streaming dan dihentikan segera setelah pemrosesan streaming selesai atau dihentikan. File yang merupakan kandidat untuk dibersihkan, tetapi tidak dapat dibersihkan selama pemrosesan aliran akan diambil saat Pemuat Otomatis berjalan di lain waktu.

Tersedia di Databricks Runtime 16.4 ke atas.
cloudFiles.cleanSource.retentionDuration 30 days Jumlah waktu untuk menunggu sebelum file yang diproses menjadi kandidat pengarsipan dengan cleanSource. Harus lebih besar dari 7 hari untuk DELETE. Tidak ada batasan minimum untuk MOVE.
Nilainya adalah string CalendarInterval . Misalnya, "14 days", , "30 days""2 weeks", atau "1 month".
Tersedia di Databricks Runtime 16.4 ke atas.
cloudFiles.cleanSource.moveDestination Tidak Jalur untuk mengarsipkan file yang telah diproses ke lokasi cloudFiles.cleanSource ketika cloudFiles.cleanSource diatur ke . Ini bisa menjadi jalur penyimpanan cloud atau jalur volume Katalog Unity (misalnya, /Volumes/my_catalog/my_schema/my_volume/archive/).
Lokasi pemindahan harus:
  • Bukan anak dari direktori sumber. Jika Anda menempatkan tujuan pemindahan di dalam direktori sumber, file yang diarsipkan akan diserap lagi.
  • Berada di lokasi eksternal, volume, atau pemasangan DBFS yang sama dengan sumbernya. Gerakan lintas wadah dan lintas kontainer tidak didukung dan mengakibatkan kesalahan.

Auto Loader harus memiliki izin tulis ke direktori ini.
Tersedia di Databricks Runtime 16.4 ke atas.
cloudFiles.format Tidak ada (opsi yang diperlukan) Format file data di jalur sumber. Nilai yang valid meliputi:
cloudFiles.includeExistingFiles true Apakah akan menyertakan file yang ada di jalur input pemrosesan aliran atau hanya memproses file baru yang tiba setelah pengaturan awal. Opsi ini dievaluasi hanya ketika Anda memulai streaming untuk pertama kalinya. Mengubah opsi ini setelah memulai ulang aliran tidak berpengaruh.
cloudFiles.inferColumnTypes false Apakah akan menyimpulkan tipe kolom yang tepat saat memanfaatkan inferensi skema. Secara default, kolom disimpulkan sebagai string saat menyimpulkan himpunan data JSON dan CSV. Lihat inferensi skema untuk detail selengkapnya.
cloudFiles.maxBytesPerTrigger Tidak Jumlah maksimum byte baru yang akan diproses di setiap pemicu. Anda dapat menentukan string byte seperti 10g untuk membatasi setiap microbatch hingga 10 GB data. Ini adalah nilai maksimum yang bersifat fleksibel. Jika Anda memiliki file berukuran masing-masing 3 GB, Azure Databricks memproses 12 GB dalam mikro-batch. Ketika digunakan bersama dengan cloudFiles.maxFilesPerTrigger, Azure Databricks menggunakan hingga batas bawah cloudFiles.maxFilesPerTrigger atau cloudFiles.maxBytesPerTrigger, tergantung mana yang tercapai lebih dulu. Opsi ini tidak berpengaruh saat digunakan dengan Trigger.Once() (Trigger.Once() tidak digunakan lagi).
Di Databricks Runtime 18.0 ke atas, opsi ini dikonfigurasi secara dinamis dan tidak perlu diatur secara manual.
cloudFiles.maxFileAge Tidak Berapa lama peristiwa file dilacak untuk tujuan deduplikasi. Databricks tidak merekomendasikan menyetel parameter ini kecuali Anda mengimpor data dengan jumlah jutaan file per jam. Lihat bagian tentang Pelacakan peristiwa file untuk detail selengkapnya.
Penyetelan cloudFiles.maxFileAge terlalu agresif dapat menyebabkan masalah kualitas data seperti penyerapan duplikat atau file yang hilang. Oleh karena itu, Databricks merekomendasikan pengaturan konservatif untuk cloudFiles.maxFileAge, seperti 90 hari, yang mirip dengan rekomendasi solusi penyerapan data yang sebanding.
cloudFiles.maxFilesPerTrigger 1000 Jumlah maksimum file baru yang akan diproses di setiap pemicu. Ketika digunakan bersama dengan cloudFiles.maxBytesPerTrigger, Azure Databricks menggunakan hingga batas bawah cloudFiles.maxFilesPerTrigger atau cloudFiles.maxBytesPerTrigger, tergantung mana yang tercapai lebih dulu. Opsi ini tidak berpengaruh ketika digunakan dengan Trigger.Once() (tidak digunakan lagi).
Di Databricks Runtime 18.0 ke atas, opsi ini dikonfigurasi secara dinamis dan tidak perlu diatur secara manual.
cloudFiles.partitionColumns Tidak Daftar kolom partisi gaya Apache Hive yang dipisahkan koma yang ingin Anda simpulkan dari struktur direktori file. Kolom partisi gaya Apache Hive adalah pasangan kunci-nilai yang dikombinasikan dengan tanda kesetaraan seperti <base-path>/a=x/b=1/c=y/file.format. Dalam contoh ini, kolom partisi adalah a, b, dan c. Secara default kolom ini secara otomatis ditambahkan ke skema Anda jika Anda menggunakan inferensi skema dan menyediakan <base-path> untuk memuat data. Jika Anda memberikan skema, Auto Loader mengharapkan kolom ini disertakan dalam skema. Jika Anda tidak ingin kolom ini sebagai bagian dari skema Anda, Anda dapat menentukan "" untuk mengabaikan kolom ini. Selain itu, Anda dapat menggunakan opsi ini ketika Anda ingin kolom disimpulkan jalur file dalam struktur direktori yang kompleks, seperti contoh di bawah ini:
<base-path>/year=2022/week=1/file1.csv
<base-path>/year=2022/month=2/day=3/file2.csv
<base-path>/year=2022/month=2/day=4/file3.csv
Menentukan cloudFiles.partitionColumns sebagai year,month,day menghasilkan year=2022 untuk file1.csv, tetapi kolom month dan day adalah null.
month dan day diurai dengan benar untuk file2.csv dan file3.csv.
cloudFiles.schemaEvolutionMode addNewColumns ketika skema tidak disediakan, none jika tidak Mode untuk memperbarui skema ketika kolom baru ditemukan dalam data. Secara default, kolom disimpulkan sebagai string saat menyimpulkan himpunan data JSON. Lihat evolusi skema untuk detail selengkapnya.
cloudFiles.schemaHints Tidak Informasi skema yang Anda berikan kepada Auto Loader selama inferensi skema. Lihat hint skema untuk detail selengkapnya.
cloudFiles.schemaLocation Tidak ada (diperlukan untuk menyimpulkan skema) Lokasi untuk menyimpan skema yang disimpulkan dan perubahan selanjutnya. Lihat inferensi skema untuk detail selengkapnya.
cloudFiles.useStrictGlobber false Apakah akan menggunakan globber ketat yang sesuai dengan perilaku pengglobberan default dari sumber-sumber file lain pada Apache Spark. Lihat Pola pemuatan data umum untuk detail selengkapnya. Tersedia di Databricks Runtime 12.2 LTS ke atas.
cloudFiles.validateOptions true Apakah akan memvalidasi opsi Auto Loader dan menghasilkan kesalahan jika ada opsi yang tidak diketahui atau tidak konsisten.

Daftar direktori

Key Default Description
cloudFiles.useIncrementalListing (tidak digunakan lagi) auto pada Databricks Runtime 17.2 ke bawah, false pada Databricks Runtime 17.3 ke atas Fitur ini sudah tidak digunakan. Databricks merekomendasikan penggunaan mode pemberitahuan file dengan peristiwa file dibandingkan cloudFiles.useIncrementalListing.
Apakah akan menggunakan daftar inkremental daripada daftar lengkap dalam mode daftar direktori. Secara default, Auto Loader melakukan upaya terbaik untuk secara otomatis mendeteksi apakah direktori tertentu berlaku untuk daftar bertambah bertahap. Anda dapat secara eksplisit menggunakan daftar bertambah atau menggunakan daftar direktori lengkap dengan mengaturnya sebagai true atau false.
Mengaktifkan daftar bertahap secara tidak benar pada direktori yang tidak diurutkan secara leksikal dapat mencegah Auto Loader menemukan file baru.
Bekerja dengan Azure Data Lake Storage (abfss://), S3 (s3://), dan GCS (gs://).
Tersedia di Databricks Runtime 9.1 LTS ke atas.
Nilai yang tersedia: auto, true, false

Pemberitahuan file

Untuk informasi tentang mengonfigurasi mode pemberitahuan file, termasuk izin cloud yang diperlukan, instruksi penyiapan, dan metode autentikasi, lihat Mengonfigurasi aliran Auto Loader dalam mode pemberitahuan file.

Key Default Description
cloudFiles.fetchParallelism 1 Jumlah thread yang akan digunakan saat mengambil pesan dari layanan antrean.
Jangan gunakan ketika cloudFiles.useManagedFileEvents diatur ke true.
cloudFiles.pathRewrites Tidak Diperlukan hanya jika Anda menentukan queueUrl yang menerima pemberitahuan file dari beberapa wadah S3 dan Anda ingin menggunakan titik pemasangan yang dikonfigurasi untuk mengakses data dalam kontainer ini. Gunakan opsi ini untuk mengubah awalan jalur bucket/key dengan titik pemasangan. Hanya awalan yang dapat ditulis ulang. Misalnya, untuk konfigurasi {"<databricks-mounted-bucket>/path": "dbfs:/mnt/data-warehouse"}, jalur s3://<databricks-mounted-bucket>/path/2017/08/fileA.json ditulis ulang ke dbfs:/mnt/data-warehouse/2017/08/fileA.json.
Jangan gunakan ketika cloudFiles.useManagedFileEvents diatur ke true.
cloudFiles.resourceTag Tidak Serangkaian pasangan tag nilai kunci untuk membantu mengaitkan dan mengidentifikasi sumber daya terkait, misalnya:
cloudFiles.option("cloudFiles.resourceTag.myFirstKey", "myFirstValue")
.option("cloudFiles.resourceTag.mySecondKey", "mySecondValue")
Untuk informasi selengkapnya tentang AWS, lihat tag alokasi biaya Amazon SQS dan Mengonfigurasi tag untuk topik Amazon SNS. (1)
Untuk informasi selengkapnya tentang Azure, lihat Penamaan Antrean dan Metadata serta cakupanproperties.labels di Langganan Peristiwa. Auto Loader menyimpan pasangan tag nilai kunci ini di JSON sebagai label. (1)
Untuk informasi selengkapnya tentang GCP, lihat Melaporkan penggunaan dengan label. (1)
Jangan gunakan ketika cloudFiles.useManagedFileEvents diatur ke true. Sebagai gantinya, atur tag sumber daya menggunakan konsol penyedia cloud.
cloudFiles.useManagedFileEvents false Saat diatur ke true, Auto Loader menggunakan layanan peristiwa file untuk menemukan file di lokasi eksternal Anda. Anda dapat menggunakan opsi ini hanya jika jalur beban berada di lokasi eksternal dengan peristiwa file diaktifkan. Lihat Gunakan mode pemberitahuan file dengan peristiwa file.
Peristiwa file menyediakan performa tingkat pemberitahuan dalam penemuan file, karena Auto Loader dapat menemukan file baru setelah eksekusi terakhir. Tidak seperti daftar direktori, proses ini tidak perlu mencantumkan semua file dalam direktori.
Ada beberapa situasi ketika Auto Loader menggunakan daftar direktori meskipun opsi peristiwa file diaktifkan:
  • Selama pemuatan awal, ketika includeExistingFiles diatur ke true, pembuatan daftar direktori lengkap berlangsung untuk mengidentifikasi semua file yang ada di direktori sebelum Auto Loader dimulai.
  • Layanan peristiwa file mengoptimalkan penemuan file dengan membuat cache file yang terakhir dibuat. Jika Auto Loader jarang berjalan, cache ini dapat kedaluwarsa, dan Auto Loader kembali ke daftar direktori untuk menemukan file dan memperbarui cache. Untuk menghindari skenario ini, panggil Auto Loader setidaknya sekali setiap tujuh hari.

Lihat Kapan Auto Loader dengan peristiwa file menggunakan daftar direktori? untuk daftar situasi yang komprehensif saat Auto Loader menggunakan daftar direktori dengan opsi ini.
Tersedia di Databricks Runtime 14.3 LTS ke atas.
cloudFiles.listOnStart false Saat diatur ke true, Auto Loader melakukan daftar direktori lengkap saat streaming dimulai, alih-alih memulai dengan token kelanjutan di titik pemeriksaan. Gunakan opsi ini untuk memulihkan dari kesalahan, seperti CF_MANAGED_FILE_EVENTS_INVALID_CONTINUATION_TOKEN. Lihat Bagaimana cara memulihkan dari CF_MANAGED_FILE_EVENTS_INVALID_CONTINUATION_TOKEN kesalahan?.
cloudFiles.useNotifications false Apakah akan menggunakan mode pemberitahuan file untuk menentukan ketika ada file baru. Jika false, gunakan mode daftar direktori. Lihat Bandingkan mode deteksi file Auto Loader.
Jangan gunakan ketika cloudFiles.useManagedFileEvents diatur ke true.

(1) Auto Loader menambahkan pasangan tag nilai kunci berikut secara default dengan upaya terbaik:

  • vendor: Databricks
  • path: Lokasi dari tempat data dimuat. Tidak tersedia di GCP karena batasan pelabelan.
  • checkpointLocation: Lokasi titik pemeriksaan aliran. Tidak tersedia di GCP karena batasan pelabelan.
  • streamId: Pengidentifikasi unik global untuk aliran ini.

Databricks mencadangkan nama kunci ini, dan Anda tidak dapat menimpa nilainya.

Khusus cloud

Auto Loader menyediakan opsi untuk mengonfigurasi infrastruktur cloud untuk mode pemberitahuan file. Untuk izin cloud dan instruksi penyiapan yang diperlukan, lihat Mengonfigurasi aliran Auto Loader dalam mode pemberitahuan file.

AWS

Berikan opsi berikut hanya jika Anda memilih cloudFiles.useNotifications = true dan Anda ingin Auto Loader menyiapkan layanan pemberitahuan untuk Anda:

Key Default Description
cloudFiles.region Wilayah instans EC2 Wilayah tempat wadah S3 sumber berada dan tempat Anda ingin membuat layanan AWS SNS dan SQS.
Key Default Description
cloudFiles.restrictNotificationSetupToSameAWSAccountId false Hanya izinkan notifikasi acara dari bucket AWS S3 di akun yang sama dengan topik SNS. Jika true, Auto Loader hanya menerima pemberitahuan peristiwa dari wadah AWS S3 di akun yang sama dengan topik SNS.
Ketika false, kebijakan akses tidak membatasi penyiapan bucket lintas akun dan topik SNS. Ini berguna ketika topik SNS dan jalur bucket dikaitkan dengan akun yang berbeda.
Tersedia di Databricks Runtime 17.2 ke atas.

Berikan opsi berikut hanya jika Anda memilih cloudFiles.useNotifications = true dan Anda ingin Auto Loader menggunakan antrean yang telah Anda siapkan:

Key Default Description
cloudFiles.queueUrl Tidak URL untuk antrian SQS. Jika disediakan, Auto Loader langsung mengonsumsi event dari antrean ini daripada harus menyiapkan layanan AWS SNS dan SQS sendiri.

Opsi autentikasi AWS

Berikan opsi autentikasi berikut untuk menggunakan kredensial layanan Databricks:

Key Default Description
databricks.serviceCredential Tidak Nama kredensial layanan untuk Databricks Anda. Tersedia di Databricks Runtime 16.1 ke atas.

Ketika kredensial layanan Databricks atau peran IAM tidak tersedia, Anda dapat menyediakan opsi autentikasi berikut sebagai gantinya:

Key Default Description
cloudFiles.awsAccessKey Tidak ID kunci akses AWS untuk pengguna. Harus dilengkapi dengan cloudFiles.awsSecretKey.
cloudFiles.awsSecretKey Tidak Kunci akses rahasia AWS untuk pengguna. Harus dilengkapi dengan cloudFiles.awsAccessKey.
cloudFiles.roleArn Tidak ARN dari peran IAM untuk digunakan, jika diperlukan. Peran dapat diasumsikan dari profil instans kluster Anda atau dengan memberikan kredensial dengan cloudFiles.awsAccessKey dan cloudFiles.awsSecretKey.
cloudFiles.roleExternalId Tidak Pengidentifikasi yang perlu disediakan saat mengasumsikan peran menggunakan cloudFiles.roleArn.
cloudFiles.roleSessionName Tidak Nama sesi opsional untuk digunakan sambil mengasumsikkan peran menggunakan cloudFiles.roleArn.
cloudFiles.stsEndpoint Tidak Titik akhir opsional yang digunakan untuk mengakses AWS STS saat mengambil peran menggunakan cloudFiles.roleArn.
Azure

Anda harus memberikan nilai untuk semua opsi berikut jika Anda menentukan cloudFiles.useNotifications = true dan Anda ingin Auto Loader menyiapkan layanan notifikasi untuk Anda:

Key Default Description
cloudFiles.resourceGroup Tidak Grup Sumber Daya Azure tempat akun penyimpanan dibuat.
cloudFiles.subscriptionId Tidak ID Langganan Azure tempat grup sumber daya dibuat.
databricks.serviceCredential Tidak Nama kredensial layanan untuk Databricks Anda. Tersedia di Databricks Runtime 16.1 ke atas.

Jika kredensial layanan Databricks tidak tersedia, Anda dapat menyediakan opsi autentikasi berikut:

Key Default Description
cloudFiles.clientId Tidak ID klien atau ID aplikasi dari perwakilan layanan.
cloudFiles.clientSecret Tidak Rahasia klien dari prinsipal layanan.
cloudFiles.connectionString Tidak String koneksi untuk akun penyimpanan, berdasarkan kunci akses akun atau tanda tangan akses bersama (SAS).
cloudFiles.tenantId Tidak ID Penyewa Azure tempat perwakilan layanan dibuat.

Berikan opsi berikut hanya jika Anda mengatur cloudFiles.useNotifications = true dan Anda ingin Auto Loader menggunakan antrean yang sudah ada:

Key Default Description
cloudFiles.queueName Tidak Nama dari antrean Azure. Jika disediakan, sumber file cloud langsung memproses kejadian dari antrean ini, alih-alih menyiapkan layanan Azure Event Grid dan Queue Storage miliknya sendiri. Dalam hal ini, databricks.serviceCredential atau cloudFiles.connectionString Anda hanya memerlukan izin membaca pada antrean.
GCP

Auto Loader dapat secara otomatis menyiapkan layanan pemberitahuan untuk Anda dengan memanfaatkan kredensial layanan Databricks. Akun layanan yang dibuat dengan kredensial layanan Databricks akan memerlukan izin yang ditentukan dalam Mengonfigurasi aliran Auto Loader dalam mode pemberitahuan file.

Key Default Description
cloudFiles.projectId Tidak ID proyek tempat wadah GCS berada. Langganan Google Cloud Pub/Sub juga dibuat dalam proyek ini.
databricks.serviceCredential Tidak Nama kredensial layanan untuk Databricks Anda. Tersedia di Databricks Runtime 16.1 ke atas.

Jika kredensial layanan Databricks tidak tersedia, Anda dapat menggunakan Akun Layanan Google secara langsung. Anda dapat mengonfigurasi kluster untuk mengasumsikan akun layanan dengan mengikuti penyiapan layanan Google atau memberikan opsi autentikasi berikut secara langsung:

Key Default Description
cloudFiles.client Tidak ID klien akun Layanan Google.
cloudFiles.clientEmail Tidak Email akun Google Service.
cloudFiles.privateKey Tidak Kunci privat yang dihasilkan untuk Akun Layanan Google.
cloudFiles.privateKeyId Tidak ID kunci privat yang dihasilkan untuk Akun Layanan Google.

Berikan opsi berikut hanya jika Anda memilih cloudFiles.useNotifications = true dan Anda ingin Auto Loader menggunakan antrean yang telah Anda siapkan:

Key Default Description
cloudFiles.subscription Tidak Nama langganan Google Cloud Pub/Sub. Jika disediakan, sumber berkas awan mengambil acara dari antrian ini alih-alih menyiapkan Pemberitahuan GCS dan layanan Google Cloud Pub/Sub sendiri.

Danau Delta

Opsi berikut berlaku saat membaca dari tabel Delta Lake menggunakan spark.readStream.

Key Default Description
allowSourceColumnDrop Tidak Atur ke nomor versi tabel Delta atau "always" untuk memungkinkan aliran dilanjutkan setelah kolom dihilangkan dari skema tabel sumber. Saat diatur ke nomor versi, mengakui semua perubahan skema hingga versi tersebut. Membutuhkan schemaTrackingLocation. Lihat mengganti nama dan menghapus kolom dengan menggunakan pemetaan kolom Delta Lake.
allowSourceColumnRename Tidak Atur ke nomor versi tabel Delta atau "always" untuk memungkinkan aliran dilanjutkan setelah kolom diganti namanya dalam tabel sumber. Saat diatur ke nomor versi, mengakui semua perubahan skema hingga versi tersebut. Membutuhkan schemaTrackingLocation. Lihat mengganti nama dan menghapus kolom dengan menggunakan pemetaan kolom Delta Lake.
allowSourceColumnTypeChange Tidak Atur ke nomor versi tabel Delta atau "always" untuk memungkinkan aliran dilanjutkan setelah jenis kolom diubah dalam tabel sumber. Saat diatur ke nomor versi, mengakui semua perubahan skema hingga versi tersebut. Membutuhkan schemaTrackingLocation. Lihat Pelebaran tipe.
excludeRegex Tidak Pola ekspresi reguler. File yang jalurnya cocok dengan pola dikecualikan dari bacaan streaming. Berguna untuk memfilter file yang tidak sesuai dengan konvensi penamaan yang diharapkan.
failOnDataLoss true Apakah akan gagal kueri streaming jika data sumber telah dihapus karena retensi log (logRetentionDuration). Atur ke false untuk melewati data yang hilang dan melanjutkan pemrosesan. Lihat Mengonfigurasi retensi data untuk kueri perjalanan lintas waktu.
ignoreChanges (tidak digunakan lagi) false Tersedia di Databricks Runtime 11.3 LTS dan yang lebih rendah. Memancarkan kembali file data yang ditulis ulang setelah operasi modifikasi seperti UPDATE, , MERGE INTODELETE, atau OVERWRITE. Baris yang tidak berubah dapat dipancarkan bersama baris baru, sehingga konsumen hilir harus menangani duplikat. Penghapusan data tidak diteruskan ke sistem hilir. Digantikan oleh skipChangeCommits dalam Databricks Runtime 12.2 LTS ke atas.
ignoreDeletes (tidak digunakan lagi) false Mengabaikan transaksi yang menghapus data pada batas partisi (hanya penurunan partisi penuh). Tidak menangani penghapusan non-partisi, pembaruan, atau modifikasi lainnya. Gunakan skipChangeCommits sebagai gantinya.
readChangeFeed atau readChangeData false Apakah akan mengaktifkan pembacaan umpan data perubahan untuk kueri streaming. Saat diaktifkan, aliran memancarkan perubahan tingkat baris (menyisipkan, memperbarui, dan menghapus) dengan kolom metadata tambahan. Lihat Gunakan umpan data perubahan Delta Lake pada Azure Databricks.
schemaTrackingLocation Tidak Jalur ke direktori tempat Delta Lake melacak perubahan skema untuk pembacaan streaming. Diperlukan saat streaming dari tabel dengan pemetaan kolom diaktifkan dan menggunakan allowSourceColumn* opsi untuk menangani evolusi skema. Harus berada dalam checkpointLocation kueri streaming. Lihat mengganti nama dan menghapus kolom dengan menggunakan pemetaan kolom Delta Lake.
skipChangeCommits false Mengabaikan transaksi yang menghapus atau memodifikasi rekaman dan proses yang ada hanya menambahkan. Databricks merekomendasikan opsi ini untuk sebagian besar beban kerja yang tidak menggunakan umpan data perubahan. Tersedia di Databricks Runtime 12.2 LTS ke atas. Lihat Melewati penerapan perubahan hulu dengan skipChangeCommits.
startingTimestamp Versi terbaru tersedia Tanda waktu untuk mulai membaca. Aliran membaca semua perubahan tabel yang dilakukan pada atau setelah tanda waktu yang ditentukan. Jika tanda waktu mendahului semua penerapan tabel yang tersedia, aliran dimulai dari penerapan paling awal yang tersedia. Tidak dapat digunakan bersama dengan startingVersion. Diabaikan jika titik pemeriksaan streaming sudah ada.
Nilai yang valid: string tanda waktu seperti "2019-01-01T00:00:00.000Z" atau string tanggal seperti "2019-01-01".
startingVersion Versi terbaru tersedia Versi tabel Delta untuk mulai membaca. Aliran membaca semua perubahan yang dilakukan pada atau setelah versi yang ditentukan. Tentukan "latest" untuk memulai dari hanya perubahan terbaru. Tidak dapat digunakan bersama dengan startingTimestamp. Diabaikan jika titik pemeriksaan streaming sudah ada. Lihat Bekerja dengan riwayat tabel.
withEventTimeOrder false Membagi rekam jepret tabel awal menjadi wadah waktu peristiwa untuk mencegah rekaman ditandai sebagai peristiwa terlambat dan dihilangkan dalam kueri stateful dengan marka air. Tidak dapat diubah setelah pemrosesan rekam jepret awal dimulai tanpa menghapus titik pemeriksaan. Tersedia di Databricks Runtime 11.3 LTS ke atas. Lihat Memproses rekam jepret awal tanpa menghilangkan data.

Kafka

Gunakan opsi ini dengan atau spark.readStream.format("kafka")spark.read.format("kafka"):

Key Default Description
assign Tidak Partisi tertentu untuk dikonsumsi. Anda harus menentukan tepat salah subscribesatu opsi , subscribePattern, atau assign . Nilai yang valid: string JSON, seperti {"topicA":[0,1],"topicB":[2,4]}.
failOnDataLoss true Apakah akan menggagalkan kueri jika data mungkin hilang, misalnya, karena topik yang dihapus atau pemotongan offset. Atur ke false untuk melewati data yang hilang dan melanjutkan. Nilai yang valid: true, false.
Databricks memperkirakan secara konservatif apakah data mungkin telah hilang. Namun, ini dapat menyebabkan alarm palsu.
fetchoffset.numretries 3 Jumlah percobaan ulang saat mengambil offset Kafka gagal. Nilai yang valid: bilangan bulat non-negatif.
fetchoffset.retryintervalms 1000 Interval dalam milidetik antara percobaan ulang pengambilan offset. Nilai yang valid: bilangan bulat non-negatif.
groupIdPrefix spark-kafka-source (streaming), spark-kafka-relation (batch) Awalan yang disesuaikan untuk digunakan untuk ID grup konsumen Kafka yang dihasilkan secara otomatis. Jika kafka.group.id diatur secara eksplisit, konektor mengabaikan opsi ini. Nilai yang valid: string apa pun.
includeHeaders false Apakah akan menyertakan header pesan Kafka sebagai kolom dalam output. Nilai yang valid: true, false.
kafkaconsumer.polltimeoutms Tidak Batas waktu dalam milidetik untuk panggilan konsumen poll() Kafka. Nilai yang valid: bilangan bulat positif.
kafka.bootstrap.servers Tidak Daftar alamat host:port yang dipisahkan koma untuk broker Kafka. Mengatur properti klien bootstrap.servers Kafka.
Jika Anda menemukan tidak ada data dari Kafka, periksa daftar alamat broker ini untuk alamat yang salah. Jika daftar alamat broker salah, mungkin tidak ada kesalahan. Klien Kafka mengasumsikan broker akan tersedia pada akhirnya dan mencoba kembali selamanya ketika mereka menerima kesalahan jaringan.
maxRecordsPerPartition Tidak Jumlah maksimum rekaman untuk setiap partisi Spark. Saat diatur, konektor membagi partisi Kafka sehingga setiap partisi Spark membaca paling banyak rekaman sebanyak ini. Nilai yang valid: bilangan bulat positif.
Anda juga dapat menggunakan opsi ini dengan minPartitions. Saat kedua opsi diatur, Spark menggunakan opsi mana pun yang menghasilkan lebih banyak partisi.
minPartitions Tidak Jumlah minimum partisi Spark untuk dibaca dari Kafka. Ketika diatur, konektor membagi partisi Kafka besar untuk meningkatkan paralelisme. Saat tidak diatur, Spark membuat satu partisi untuk setiap partisi topik Kafka. Berguna untuk menangani ke condong data atau beban puncak. Nilai yang valid: bilangan bulat positif.
Opsi ini menginisialisasi ulang konsumen Kafka untuk setiap pemicu, yang mungkin memengaruhi performa dengan SSL.
startingOffsets latest (streaming), earliest (batch) Offset tempat kueri memulai bacaan. Nilai yang valid: earliest, latest, atau string offset JSON untuk setiap partisi seperti {"topicA":{"0":23,"1":-2}}. Dalam string JSON, -1 adalah offset terbaru. -2 adalah offset paling awal.
Untuk kueri streaming, opsi ini hanya berlaku saat kueri baru dimulai. Kueri yang dilanjutkan selalu menggunakan titik pemeriksaan. Selama kueri, partisi baru mulai membaca di offset paling awal.
Untuk kueri batch, latest tidak diperbolehkan.
startingOffsetsByTimestamp Tidak Daftar memulai offset untuk setiap partisi, ditentukan sebagai tanda waktu dalam milidetik. Ketika tidak ada offset untuk tanda waktu, perilaku kueri ditentukan oleh startingOffsetsByTimestampStrategy. Nilai yang valid: string tanda waktu JSON untuk setiap partisi, seperti {"topicA":{"0":1000,"1":2000}}.
Untuk kueri streaming, opsi ini hanya berlaku saat kueri baru dimulai. Kueri yang dilanjutkan selalu menggunakan titik pemeriksaan. Selama kueri, partisi baru mulai membaca di offset paling awal.
startingOffsetsByTimestampStrategy error Strategi yang digunakan ketika tidak ada offset yang ditemukan untuk tanda waktu yang ditentukan di startingOffsetsByTimestamp atau startingTimestamp. Nilai yang valid: error (menimbulkan pengecualian), latest (menggunakan offset terbaru yang tersedia).
startingTimestamp Tidak Tanda waktu mulai global dalam milidetik yang berlaku untuk semua partisi. Ketika tidak ada offset untuk tanda waktu, perilaku dikendalikan oleh startingOffsetsByTimestampStrategy. Nilai yang valid: bilangan bulat non-negatif.
subscribe Tidak Topik untuk berlangganan. Anda harus menentukan tepat salah subscribesatu opsi , subscribePattern, atau assign . Nilai yang valid: daftar nama topik yang dipisahkan koma.
subscribePattern Tidak Pola yang digunakan untuk berlangganan topik. Anda harus menentukan tepat salah subscribesatu opsi , subscribePattern, atau assign . Contohnya, topic.*. Nilai yang valid: string regex Java apa pun.

Opsi berikut hanya berlaku untuk streaming bacaan dengan spark.readStream.format("kafka"):

Key Default Description
bytesEstimateWindowLength 300s Jendela waktu yang digunakan untuk memperkirakan byte yang estimatedTotalBytesBehindLatest tersisa untuk metrik. Nilai yang valid: string durasi seperti 10m atau 600s. Lihat Ambil metrik Kafka.
maxOffsetsPerTrigger Tidak Jumlah maksimum offset untuk diproses per interval pemicu. Offset didistribusikan secara proporsional di seluruh partisi topik. Nilai yang valid: bilangan bulat positif.
maxTriggerDelay 15m Waktu maksimum untuk minOffsetsPerTrigger menunggu terakumulasi sebelum memicu. Nilai yang valid: string durasi seperti 10m atau 600s.
minOffsetsPerTrigger Tidak Jumlah minimum offset untuk terakumulasi sebelum memicu mikro-batch. Ketika maxTriggerDelay tercapai, mikro-batch berjalan terlepas dari itu. Nilai yang valid: bilangan bulat positif.

Untuk opsi offset yang hanya berlaku untuk pembacaan batch dengan spark.read.format("kafka"), lihat Opsi Kafka DataFrameReader.

Untuk klien Kafka (kafka.*) dan opsi autentikasi, lihat Opsi.

Opsi DataFrameWriter

Gunakan opsi ini dengan DataFrameWriter.option() dan DataFrameWriterV2.option() untuk mengontrol cara Azure Databricks menulis data.

Example

Contoh berikut diatur mergeSchema ke True untuk menulis tabel Delta Lake:

Python
df.write.format("delta").option("mergeSchema", True).saveAsTable("my_table")
Scala
df.write.format("delta").option("mergeSchema", "true").saveAsTable("my_table")

Avro

Key Default Description
avroSchema Tidak Skema Avro lengkap sebagai string JSON. Gunakan opsi ini untuk mengonversi jenis Spark SQL ke jenis Avro tertentu. Berlaku untuk file Avro.
avroSchemaUrl Tidak URL yang menunjuk ke file skema Avro. Gunakan alih-alih avroSchema ketika skema disimpan secara eksternal. Bersifat saling eksklusif dengan avroSchema. Berlaku untuk file Avro.
compression snappy Codec kompresi yang digunakan saat menulis. Nilai yang valid: uncompressed, , deflatesnappy, bzip2, xz, zstandard. Berlaku untuk file Avro.
recordName topLevelRecord Nama rekaman tingkat atas dalam skema Avro output. Berlaku untuk file Avro.
positionalFieldMatching false Apakah akan mencocokkan kolom antara skema Spark dan skema Avro menurut posisi bidang, bukan berdasarkan nama. Berlaku untuk file Avro.
recordNamespace String kosong Namespace untuk rekaman tingkat atas dalam skema Avro output. Berlaku untuk file Avro.

Danau Delta dan Apache Iceberg

Key Default Description
clusterByAuto false Apakah akan mengaktifkan pengklusteran cairan otomatis, di mana Azure Databricks memilih kolom pengklusteran berdasarkan pola kueri. Hanya valid dengan mode("overwrite"). Tidak dapat digunakan dengan append mode. Tersedia di Databricks Runtime 16.4 ke atas. Berlaku untuk Menggunakan pengklusteran cair untuk tabel.
mergeSchema Tidak Apakah akan mengaktifkan evolusi skema untuk operasi tulis. Kolom baru di DataFrame sumber ditambahkan ke skema tabel target. Berlaku untuk penambah batch dan streaming. Berlaku untuk Memperbarui skema tabel.
overwriteSchema Tidak Apakah akan mengganti skema tabel dan pemartisian saat menimpa. mode("overwrite") Membutuhkan tanpa replaceWhere. Tidak dapat digunakan dengan partitionOverwriteMode. Berlaku untuk Memperbarui skema tabel.
partitionOverwriteMode Tidak Mode timpa partisi. Atur ini ke dynamic untuk menimpa hanya partisi yang berisi data baru, membiarkan semua partisi lain tidak berubah. Mode warisan, tidak didukung pada komputasi tanpa server atau Databricks SQL. Nilai yang valid: static, dynamic. Berlaku untuk Menimpa data secara selektif dengan Delta Lake.
replaceOn Tidak Ekspresi boolean yang cocok dengan baris dalam tabel target untuk diganti dengan baris dari kueri sumber. Dapat mereferensikan kolom dari tabel target dan kueri sumber. Baris dalam target yang cocok dengan baris sumber dihapus dan diganti. Jika sumber kosong, tidak ada penghapusan yang terjadi. Gunakan targetAlias untuk membedakan referensi kolom. Tersedia di Databricks Runtime 17.1 ke atas. Berlaku untuk Menimpa data secara selektif dengan Delta Lake.
replaceUsing Tidak Daftar nama kolom yang dipisahkan koma yang digunakan untuk mencocokkan baris antara tabel target dan kueri sumber. Target dan sumber harus berisi semua kolom yang tercantum. Baris dalam target yang cocok dengan baris sumber di bawah perbandingan kesetaraan dihapus dan diganti. NULL nilai diperlakukan sebagai tidak sama dan tidak akan cocok. Tersedia di Databricks Runtime 16.3 ke atas. Berlaku untuk Menimpa data secara selektif dengan Delta Lake.
replaceWhere Tidak Ekspresi predikat. Secara atomik hanya menimpa rekaman yang cocok dengan predikat. Berlaku untuk Menimpa data secara selektif dengan Delta Lake.
targetAlias Tidak Alias string untuk tabel target. Gunakan dengan replaceOn atau replaceWhere untuk membedakan referensi kolom saat kondisi mereferensikan kolom dari tabel target dan kueri sumber. Berlaku untuk Menimpa data secara selektif dengan Delta Lake.
txnAppId Tidak String unik yang mengidentifikasi aplikasi untuk penulisan idempogen dalam foreachBatch operasi. Gunakan bersama-sama untuk txnVersion memastikan penulisan tepat sekali ke beberapa tabel Delta Lake. Berlaku untuk Gunakan foreachBatch untuk penulisan tabel idempotensi.
txnVersion Tidak Angka yang meningkat secara monoton yang digunakan sebagai versi transaksi untuk penulisan idempogen dalam foreachBatch operasi. Gunakan bersama-sama untuk txnAppId memastikan penulisan tepat sekali ke beberapa tabel Delta Lake. Berlaku untuk Gunakan foreachBatch untuk penulisan tabel idempotensi.
optimizeWrite Tidak Apakah akan mengaktifkan Pengoptimalan Otomatis Tulis untuk operasi tulis ini. Mengambil alih spark.databricks.delta.optimizeWrite.enabled konfigurasi. Berlaku untuk Apa delta Lake di Azure Databricks?.
userMetadata Tidak String yang ditentukan pengguna ditambahkan ke metadata penerapan untuk operasi tulis. Terlihat dalam output .DESCRIBE HISTORY Berlaku untuk Memperkaya tabel dengan metadata kustom.

CSV

Key Default Description
charToEscapeQuoteEscaping \0 (tidak diaktifkan) Karakter yang digunakan untuk menghindari karakter escape ketika berbeda dari karakter kutipan. Berlaku untuk csv (DataFrameWriter).
compression none Codec kompresi yang digunakan saat menulis. Nilai yang valid: none, , bzip2gzip, lz4, snappy, deflate, zstd. Berlaku untuk csv (DataFrameWriter).
dateFormat yyyy-MM-dd Format string untuk nilai kolom tanggal. Berlaku untuk csv (DataFrameWriter).
emptyValue String kosong String yang ditulis untuk nilai kosong (non-null). Berlaku untuk csv (DataFrameWriter).
encoding UTF-8 Pengodean karakter untuk file output. Berlaku untuk csv (DataFrameWriter).
escape \ Karakter yang digunakan untuk menghindari nilai yang dikutip. Berlaku untuk csv (DataFrameWriter).
escapeQuotes true Apakah akan lolos dari karakter kutipan di dalam nilai bidang yang dikutip. Berlaku untuk csv (DataFrameWriter).
header false Apakah akan menulis nama kolom sebagai baris pertama output. Berlaku untuk csv (DataFrameWriter).
ignoreLeadingWhiteSpace false Apakah akan memangkas spasi kosong di depan dari nilai saat menulis. Berlaku untuk csv (DataFrameWriter).
ignoreTrailingWhiteSpace false Apakah akan memangkas spasi kosong berikutnya dari nilai saat menulis. Berlaku untuk csv (DataFrameWriter).
lineSep \n String pemisah baris yang digunakan di antara rekaman. Berlaku untuk csv (DataFrameWriter).
locale en-US Sebuah pengenal java.util.Locale. Memengaruhi pemformatan nilai tanggal dan tanda waktu saat menulis.
nullValue String kosong String ditulis untuk nilai null. Berlaku untuk csv (DataFrameWriter).
quote " Karakter yang digunakan untuk mengutip nilai bidang yang berisi pemisah. Berlaku untuk csv (DataFrameWriter).
quoteAll false Apakah akan mengapit semua nilai bidang dalam tanda kutip terlepas dari kontennya. Berlaku untuk csv (DataFrameWriter).
sep , Karakter pemisah bidang. Berlaku untuk csv (DataFrameWriter).
timestampFormat yyyy-MM-dd'T'HH:mm:ss[.SSS][XXX] String format untuk nilai kolom tanda waktu. Berlaku untuk csv (DataFrameWriter).
timestampNTZFormat yyyy-MM-dd'T'HH:mm:ss[.SSS] Format string untuk tanda waktu tanpa nilai kolom zona waktu (TimestampNTZType).

Excel

Key Default Description
dataAddress Tidak Nama lembar atau sel awal untuk tulis. Jika dihilangkan, tulis ke lembar bernama Sheet1 mulai dari sel A1. Menerima nama lembar ("SheetName") atau referensi sel tunggal ("SheetName!A1"). Rentang sel tidak didukung untuk penulisan.
dateFormatInWrite yyyy-mm-dd Excel string format sel yang diterapkan ke kolom Date. Menggunakan sintaks format Excel.
headerRows 0 Apakah akan menulis nama kolom sebagai baris pertama. Nilai yang valid: 0, 1.
timestampNTZFormat yyyy-mm-dd hh:mm:ss Excel string format sel yang diterapkan ke kolom TimestampNTZ dan Timestamp. Menggunakan sintaks format Excel.
version xlsx Versi format file Excel untuk ditulis. Nilai yang valid: xlsx, xls.

JSON

Key Default Description
compression none Codec kompresi yang digunakan saat menulis. Nilai yang valid: none, , bzip2gzip, lz4, snappy, deflate, zstd. Berlaku untuk json (DataFrameWriter).
dateFormat yyyy-MM-dd Format string untuk nilai kolom tanggal. Berlaku untuk json (DataFrameWriter).
encoding UTF-8 Pengodean karakter untuk file output. Berlaku untuk json (DataFrameWriter).
ignoreNullFields nilai dari spark.sql.jsonGenerator.ignoreNullFields Apakah akan menghilangkan bidang dengan nilai null dari output JSON. Berlaku untuk json (DataFrameWriter).
lineSep \n String pemisah baris yang digunakan di antara rekaman. Berlaku untuk json (DataFrameWriter).
locale en-US Sebuah pengenal java.util.Locale. Memengaruhi pemformatan nilai tanggal dan tanda waktu saat menulis.
pretty false Apakah akan mengaktifkan output JSON cantik (inden, multibaris).
sortKeys false Apakah akan mengurutkan kunci objek JSON menurut abjad dalam output. Berguna untuk menghasilkan output deterministik.
timestampFormat yyyy-MM-dd'T'HH:mm:ss[.SSS][XXX] String format untuk nilai kolom tanda waktu. Berlaku untuk json (DataFrameWriter).
timestampNTZFormat yyyy-MM-dd'T'HH:mm:ss[.SSS] Format string untuk tanda waktu tanpa nilai kolom zona waktu (TimestampNTZType).
writeNonAsciiCharacterAsCodePoint false Apakah akan mengodekan karakter non-ASCII sebagai \uXXXX urutan escape Unicode alih-alih karakter UTF-8 harfiah dalam output.

ORC

Key Default Description
compression zstd Codec kompresi yang digunakan saat menulis. Nilai yang valid: none, , uncompressedsnappy, zlib, lzo, zstd, lz4, brotli. Berlaku untuk orc (DataFrameWriter).

Parket

Key Default Description
compression snappy Codec kompresi yang digunakan saat menulis. Nilai yang valid: none, , snappyuncompressed, gzip, lzo, brotli, lz4, lz4_raw, zstd. Berlaku untuk parquet (DataFrameWriter).
spark.sql.parquet.outputTimestampType INT96 Jenis fisik yang digunakan untuk mengodekan kolom tanda waktu. Nilai yang valid: INT96, TIMESTAMP_MICROS, TIMESTAMP_MILLIS. Gunakan INT96 untuk kompatibilitas dengan pembaca Parquet warisan yang tidak mendukung jenis tanda waktu standar.

Teks

Key Default Description
compression none Codec kompresi yang digunakan saat menulis. Nilai yang valid: none, , bzip2gzip, lz4, snappy, deflate, zstd. Berlaku untuk teks (DataFrameWriter).
encoding UTF-8 Pengodean karakter untuk file output.
lineSep \n String pemisah baris yang digunakan di antara rekaman. Berlaku untuk teks (DataFrameWriter).

XML

Key Default Description
arrayElementName item Nama elemen untuk elemen array yang tidak memiliki nama eksplisit. Berlaku untuk xml (DataFrameWriter).
attributePrefix _ Awalan diawali ke nama bidang yang sesuai dengan atribut XML. Berlaku untuk xml (DataFrameWriter).
compression none Codec kompresi yang digunakan saat menulis. Nilai yang valid: none, , bzip2gzip, lz4, snappy, deflate, zstd. Berlaku untuk xml (DataFrameWriter).
dateFormat yyyy-MM-dd Format string untuk nilai kolom tanggal. Berlaku untuk xml (DataFrameWriter).
declaration version="1.0" encoding="UTF-8" standalone="yes" String deklarasi XML yang ditulis di bagian atas setiap file output. Atur ke string kosong untuk menekan deklarasi. Berlaku untuk xml (DataFrameWriter).
encoding UTF-8 Pengodean karakter untuk file output. Berlaku untuk xml (DataFrameWriter).
indent 4 spasi String yang digunakan untuk mengindentasi elemen turunan dalam output. Atur ke string kosong untuk menonaktifkan indentasi dan menulis setiap baris pada satu baris.
locale en-US Sebuah pengenal java.util.Locale. Memengaruhi pemformatan nilai tanggal dan tanda waktu saat menulis.
nullValue null String yang ditulis untuk nilai null. Ketika diatur ke null, atribut dan elemen turunan untuk bidang null dihilangkan. Berlaku untuk xml (DataFrameWriter).
rootTag ROWS Tag elemen akar yang membungkus semua elemen baris dalam output. Berlaku untuk xml (DataFrameWriter).
rowTag ROW Tag elemen yang mewakili baris dalam output. Berlaku untuk xml (DataFrameWriter).
singleVariantColumn Tidak Nama kolom Varian tunggal untuk ditulis ke file XML. Berlaku untuk xml (DataFrameWriter).
timestampFormat yyyy-MM-dd'T'HH:mm:ss[.SSS][XXX] String format untuk nilai kolom tanda waktu. Berlaku untuk xml (DataFrameWriter).
timestampNTZFormat yyyy-MM-dd'T'HH:mm:ss[.SSS] Format string untuk tanda waktu tanpa nilai kolom zona waktu. Berlaku untuk xml (DataFrameWriter).
validateName true Apakah akan melemparkan pengecualian jika nama kolom bukan pengidentifikasi elemen XML yang valid. Berlaku untuk xml (DataFrameWriter).
valueTag _VALUE Nama bidang yang digunakan untuk data karakter dalam elemen XML yang juga memiliki atribut atau elemen turunan. Berlaku untuk xml (DataFrameWriter).

Opsi DataStreamWriter

Gunakan opsi ini dengan DataStreamWriter.option() untuk mengonfigurasi penulisan streaming.

Example

Contoh berikut mengatur lokasi titik pemeriksaan untuk aliran:

Python
(df.writeStream
  .format("delta")
  .option("checkpointLocation", "/path/to/checkpoint")
  .start("/path/to/table"))
Scala
df.writeStream
  .format("delta")
  .option("checkpointLocation", "/path/to/checkpoint")
  .start("/path/to/table")

Umum

Key Default Description
checkpointLocation Tidak ada (diperlukan) Jalur ke direktori titik pemeriksaan untuk kueri streaming. Diperlukan untuk toleransi kesalahan dan jaminan pemrosesan tepat sekali. Setiap kueri streaming harus menggunakan lokasi titik pemeriksaan unik. Databricks merekomendasikan penyimpanan titik pemeriksaan di volume Unity Catalog atau jalur penyimpanan cloud. Lihat checkpoint Streaming Terstruktur.
path Tidak Jalur output untuk sink streaming berbasis file seperti Parquet. Hanya berlaku untuk format berbasis file.

Sink konsol

Key Default Description
numRows 20 Jumlah baris yang ditampilkan untuk setiap mikro-batch saat menulis ke sink konsol.
truncate true Apakah akan memotong string panjang saat menampilkan baris. Atur ke false untuk menampilkan nilai string lengkap.

Danau Delta

Opsi berikut berlaku saat menulis aliran ke tabel Delta Lake menggunakan format("delta"). Timpa opsi khusus seperti overwriteSchema, , replaceWheredan partitionOverwriteMode tidak didukung untuk penulisan streaming.

Key Default Description
mergeSchema false Apakah akan mengembangkan skema tabel Delta Lake saat DataFrame streaming berisi kolom baru. Berlaku hanya untuk menambahkan mode output. Berlaku untuk Memperbarui skema tabel.
userMetadata Tidak String yang ditentukan pengguna ditambahkan ke metadata penerapan untuk operasi tulis. Terlihat dalam output .DESCRIBE HISTORY Berlaku untuk Memperkaya tabel dengan metadata kustom.

Sink file

Opsi berikut berlaku saat menulis aliran ke format berbasis file (Parquet, JSON, CSV, ORC, teks). Untuk opsi khusus format, lihat Opsi DataFrameWriter.

Key Default Description
retention Tidak Berapa lama untuk mempertahankan file metadata sink yang digunakan untuk toleransi dan pemadatan kesalahan. Menerima string waktu seperti 7 days atau 24 hours. Ketika tidak diatur, file metadata dipertahankan tanpa batas waktu.

Sink Kafka

Untuk daftar lengkap opsi untuk menulis aliran ke Kafka, lihat Opsi.

Key Default Description
kafka.bootstrap.servers Tidak Required. Daftar alamat broker host:port Kafka yang dipisahkan koma.
topic Tidak Topik Kafka target untuk semua baris. Diperlukan jika DataFrame tidak menyertakan topic kolom.
kafka.* Tidak Setiap konfigurasi produsen Kafka diawali dengan kafka.. Contohnya, kafka.compression.type.

Sink memori

Key Default Description
queryName Tidak ada (diperlukan) Nama tabel dalam memori tempat kueri menulis. Diperlukan untuk sink memori. Juga dapat dikonfigurasi melalui .queryName().
mode exactlyonce Jaminan pengiriman untuk sink memori. exactlyonce menggunakan mode mikro-batch dengan semantik sekali persis. atleastonce menggunakan mode berkelanjutan dengan semantik setidaknya sekali. Nilai yang valid: exactlyonce, atleastonce.

Opsi fungsi Spark

Beberapa fungsi bawaan Spark SQL menerima options peta yang mengontrol perilaku penguraian atau serialisasi. Berikan opsi sebagai Python dict atau Scala Map[String, String].

Example

Contoh berikut mengurai kolom JSON saat menghilangkan rekaman cacat:

Python
from pyspark.sql.functions import from_json
from pyspark.sql.types import StructType, StructField, StringType

schema = StructType([StructField("name", StringType())])
df = df.withColumn("parsed", from_json("json_col", schema, {"mode": "DROPMALFORMED"}))
Scala
import org.apache.spark.sql.functions.from_json
import org.apache.spark.sql.types._

val schema = StructType(Seq(StructField("name", StringType)))
val df = df.withColumn("parsed", from_json(col("json_col"), schema, Map("mode" -> "DROPMALFORMED")))

Avro

Fungsi Avro menerima opsi yang sama dengan opsi DataFrame terkait:

Example

Contoh berikut mendekode kolom Avro dengan evolusi skema diaktifkan:

Python
from pyspark.sql.functions import from_avro

df = df.withColumn("decoded", from_avro("avro_col", json_schema, {"avroSchemaEvolutionMode": "restart"}))
Scala
import org.apache.spark.sql.avro.functions.from_avro

val df = df.withColumn("decoded", from_avro(col("avro_col"), jsonSchema, Map("avroSchemaEvolutionMode" -> "restart")))

Selain itu, varian Schema Registry dari from_avro dan to_avro menerima opsi berikut:

Key Default Description
schemaId Tidak ID Skema dari Confluent Schema Registry untuk digunakan saat mendekode data Avro yang dikodekan dengan skema yang tidak kompatibel dengan jsonFormatSchema. Hanya berlaku untuk from_avro .
confluent.schema.registry.* Tidak Properti konfigurasi klien Confluent Schema Registry. Berikan properti klien Confluent SR apa pun menggunakan awalan ini, misalnya confluent.schema.registry.basic.auth.user.info untuk kredensial autentikasi dasar. Diperlukan untuk varian from_avro Registri Skema dan to_avro.

CSV

Fungsi CSV menerima opsi yang sama dengan opsi DataFrame yang sesuai:

Example

Contoh berikut membaca CSV dengan pemisah dan NULL nilai kustom:

Python
from pyspark.sql.functions import from_csv
from pyspark.sql.types import StructType, StructField, IntegerType, StringType

schema = StructType([StructField("id", IntegerType()), StructField("name", StringType())])
df = df.withColumn("parsed", from_csv("csv_col", schema, {"sep": "|", "nullValue": "N/A"}))
Scala
import org.apache.spark.sql.functions.from_csv
import org.apache.spark.sql.types._

val schema = StructType(Seq(StructField("id", IntegerType), StructField("name", StringType)))
val df = df.withColumn("parsed", from_csv(col("csv_col"), schema, Map("sep" -> "|", "nullValue" -> "N/A")))

JSON

Fungsi JSON menerima opsi yang sama dengan opsi DataFrame yang sesuai:

Example

Contoh berikut menulis JSON dengan NULL bidang yang diabaikan dan pemformatan cantik diaktifkan:

Python
from pyspark.sql.functions import to_json

df = df.withColumn("json_str", to_json("struct_col", {"pretty": "true", "ignoreNullFields": "true"}))
Scala
import org.apache.spark.sql.functions.to_json

val df = df.withColumn("json_str", to_json(col("struct_col"), Map("pretty" -> "true", "ignoreNullFields" -> "true")))

Protobuf

from_protobuf dan to_protobuf jangan gunakan DataSource berbasis file. Data Protobuf selalu dibaca dan ditulis sebagai kolom biner menggunakan fungsi-fungsi ini. Opsi diteruskan sebagai Map[String, String] dan peka huruf besar/kecil.

Example

Contoh berikut mendekode kolom Protobuf menggunakan mode PERMISSIVE:

Python
from pyspark.sql.functions import from_protobuf

df = df.withColumn("decoded", from_protobuf("proto_col", "MyMessage", "/path/to/descriptor.desc",
    {"mode": "PERMISSIVE", "enums.as.ints": "true"}))
Scala
import org.apache.spark.sql.protobuf.functions.from_protobuf

val df = df.withColumn("decoded", from_protobuf(col("proto_col"), "MyMessage", "/path/to/descriptor.desc",
    Map("mode" -> "PERMISSIVE", "enums.as.ints" -> "true")))

Fungsi Protobuf menggunakan opsi berikut:

Key Default Description
mode FAILFAST Cara menangani catatan yang rusak. FAILFAST melempar pengecualian. PERMISSIVE mengatur bidang cacat ke null. Nilai yang valid: FAILFAST, PERMISSIVE. Berlaku untuk from_protobuf.
recursive.fields.max.depth -1 (dinonaktifkan) Kedalaman rekursi maksimum untuk bidang Protobuf rekursif. Atur ke 0 untuk menonaktifkan dukungan bidang rekursif. Nilai yang valid: 0 ke 10. Berlaku untuk from_protobuf.
convert.any.fields.to.json false Apakah akan mengonversi bidang Protobuf Any menjadi string JSON alih-alih STRUCT. Berlaku untuk from_protobuf.
emit.default.values false Apakah akan memancarkan bidang dengan nilai nol atau default (semantik proto3). Ketika false, bidang dengan nilai default dihilangkan dari output. Berlaku untuk from_protobuf.
enums.as.ints false Apakah akan merender bidang enum sebagai nilai bilangan bulat, bukan string. Berlaku untuk from_protobuf.
upcast.unsigned.ints false Apakah akan meningkatkan uint32 ke Long dan uint64 untuk Decimal(20,0) mencegah luapan bilangan bulat. Berlaku untuk from_protobuf.
unwrap.primitive.wrapper.types false Apakah akan membongkar jenis pembungkus google.protobuf (misalnya, Int32Value dan StringValue) ke jenis Spark primitif yang sesuai. Berlaku untuk from_protobuf.
retain.empty.message.types false Apakah akan mempertahankan jenis pesan Protobuf kosong dalam skema output dengan menyisipkan kolom dummy. Berlaku untuk from_protobuf.
schema.registry.subject Tidak Nama subjek Registri Skema. Diperlukan saat menggunakan varian from_protobuf Registri Skema dan to_protobuf.
schema.registry.address Tidak Alamat Registri Skema (host dan port). Diperlukan saat menggunakan varian from_protobuf Registri Skema dan to_protobuf.
schema.registry.protobuf.name Tidak Menentukan pesan Protobuf mana yang akan digunakan saat subjek registri skema berisi beberapa pesan. Optional.

XML

Fungsi XML menerima opsi yang sama dengan opsi DataFrame terkait:

Example

Contoh berikut menulis XML dengan tag akar dan baris kustom:

Python
from pyspark.sql.functions import to_xml

df = df.withColumn("xml_str", to_xml("struct_col", {"rootTag": "records", "rowTag": "record"}))
Scala
import org.apache.spark.sql.functions.to_xml

val df = df.withColumn("xml_str", to_xml(col("struct_col"), Map("rootTag" -> "records", "rowTag" -> "record")))