Menyerap data ke dalam lakehouse Azure Databricks
Azure Databricks menawarkan berbagai metode untuk memasukkan data ke dalam lakehouse yang didukung oleh Delta Lake. Artikel ini mencantumkan alat penyerapan yang didukung dan panduan tentang metode mana yang akan digunakan berdasarkan kriteria seperti sumber data dan latensi.
metode penyerapan
Anda dapat menyerap data ke Dalam Databricks menggunakan metode berikut:
- penyerapan Batch dari sekumpulan baris data untuk pemrosesan yang jarang
- Penyerapan streaming baris data individual atau kumpulan baris data saat tiba untuk pemrosesan real time
Data yang diserap dimuat ke dalam tabel Delta yang kemudian dapat digunakan di seluruh data hilir dan kasus penggunaan AI Anda. Karena arsitektur Databricks Lakehouse, Anda tidak perlu menduplikasi data Anda di seluruh kasus penggunaan, dan Anda dapat memanfaatkan Unity Catalog untuk kontrol akses terpusat, audit, silsilah data, dan penemuan data di semua data Anda.
Penyerapan Batch
Dengan pemasukan batch, Anda dapat memuat data sebagai kumpulan (atau batch) baris ke dalam Databricks, sering kali berdasarkan jadwal (misalnya, setiap hari) atau dapat dipicu secara manual. Ini mewakili bagian "ekstraksi" dari ekstraksi, transformasi, pemuatan (ETL) kasus penggunaan tradisional. Anda dapat menggunakan ingest batch untuk memuat data dari:
- File-file lokal, misalnya CSV
- Penyimpanan objek cloud, termasuk Amazon S3, Azure Data Lake Storage, dan Google Cloud Storage
- Aplikasi SaaS seperti Salesforce dan database seperti SQL Server
Ingesti batch mendukung berbagai format sumber file, termasuk file CSV, TSV, JSON, XML, Avro, ORC, Parquet, dan file teks.
Databricks mendukung penyerapan batch tradisional dan opsi penyerapan batch inkremental. Meskipun penyerapan batch tradisional memproses semua rekaman setiap kali berjalan, penyerapan batch inkremental secara otomatis mendeteksi rekaman baru di sumber data dan mengabaikan rekaman yang telah diserap. Ini berarti lebih sedikit data yang perlu diproses dan, akibatnya, pekerjaan penyerapan berjalan lebih cepat dan menggunakan sumber daya komputasi dengan lebih efisien.
penyerapan batch Tradisional (satu kali)
Anda dapat mengunggah file data lokal atau mengunduh file dari URL publik menggunakan UI tambahkan data. Lihat Mengunggah file.
Penyerapan batch inkremental
Bagian ini menjelaskan alat pemrosesan batch inkremental yang didukung.
Tabel aliran data
Perintah SQL CREATE STREAMING TABLE
memungkinkan Anda memuat data secara bertahap ke dalam tabel streaming dari penyimpanan objek cloud. Lihat CREATE STREAMING TABLE.
Contoh : Penyerapan batch inkremental menggunakan tabel streaming
CREATE OR REFRESH STREAMING TABLE customers
AS SELECT * FROM read_files("/databricks-datasets/retail-org/customers/", "csv")
konektor penyimpanan objek cloud
Auto Loader, konektor penyimpanan objek cloud bawaan, memungkinkan Anda memproses file data baru secara bertahap dan efisien saat tiba di Amazon S3 (S3), Azure Data Lake Storage Gen 2 (ALDS2), atau Google Cloud Storage (GCS). Lihat Auto Loader.
Contoh : Penyerapan batch inkremental menggunakan Auto Loader
df = spark.readStream.format("cloudFiles")
.option("cloudFiles.format", "csv")
.option("rescuedDataColumn", "_rescued_data")
.schema("/databricks-datasets/retail-org/customers/schema")
.load("/databricks-datasets/retail-org/customers/")
Konektor yang dikelola sepenuhnya
Lakeflow Connect menyediakan konektor yang dikelola penuh untuk diserap dari aplikasi SaaS seperti Salesforce dan database seperti SQL Server. Konektor terkelola tersedia menggunakan yang berikut ini:
- Databricks UI
- Databricks CLI
- API Databricks
- SDK Databricks
- Bundel Aset Databricks (DAB)
Lihat Lakeflow Connect.
penyerapan streaming
Dengan penyerapan streaming, Anda terus-menerus memuat baris data atau kumpulan baris data saat data tersebut dihasilkan sehingga Anda dapat mengolahnya segera setelah tiba hampir mendekati waktu nyata. Anda dapat menggunakan penyerapan streaming untuk memuat data streaming dari sumber seperti Apache Kafka, Amazon Kinesis, Google Pub/Sub, dan Apache Pulsar.
Databricks juga mendukung penyerapan streaming menggunakan konektor bawaan. Konektor ini memungkinkan Anda memproses data baru secara bertahap dan efisien saat tiba dari sumber streaming. Lihat Konfigurasi sumber data streaming.
Contoh : Penyerapan streaming dari Kafka
spark.readStream
.format("kafka")
.option("kafka.bootstrap.servers", "<server:ip>")
.option("subscribe", "topic1")
.option("startingOffsets", "latest")
.load()
Batch dan penyerapan streaming dengan DLT
Databricks merekomendasikan penggunaan DLT untuk membangun alur pemrosesan data yang andal dan dapat diskalakan. DLT mendukung penyerapan batch dan streaming, dan Anda dapat menyerap data dari sumber data apa pun yang didukung oleh Auto Loader.
Contoh : Penyerapan batch inkremental menggunakan DLT
@dlt.table
def customers():
return (
spark.readStream.format("cloudFiles")
.option("cloudFiles.format", "csv")
.load("/databricks-datasets/retail-org/customers/")
)
Contoh : Penyerapan streaming dari Kafka menggunakan DLT
@dlt.table
def kafka_raw():
return (
spark.readStream
.format("kafka")
.option("kafka.bootstrap.servers", "<server:ip>")
.option("subscribe", "topic1")
.option("startingOffsets", "latest")
.load()
)
Jadwal konsumsi
Anda dapat menyerap data sebagai operasi satu kali, pada jadwal berulang, atau terus menerus.
- Untuk kasus penggunaan streaming hampir real-time, gunakan mode berkelanjutan.
- Untuk kasus penggunaan penyerapan batch, serap satu kali atau atur jadwal berulang.
Lihat Penyerapan dengan Pekerjaan dan Dipicu vs. mode alur berkelanjutan.
mitra penyerapan
Banyak alat pihak ketiga mendukung pengambilan batch atau streaming ke Databricks. Databricks memvalidasi berbagai integrasi pihak ketiga, meskipun langkah-langkah untuk mengonfigurasi akses ke sistem sumber dan menyerap data bervariasi menurut alat. Lihat mitra pengambilan data untuk daftar alat yang divalidasi. Beberapa mitra teknologi juga ditampilkan dalam Databricks Partner Connect, yang menyediakan UI yang menyederhanakan proses menghubungkan alat pihak ketiga ke data lakehouse.
penyerapan DIY
Databricks menyediakan platform komputasi umum. Akibatnya, Anda dapat membuat konektor penyerapan Anda sendiri menggunakan bahasa pemrograman apa pun yang didukung oleh Databricks, seperti Python atau Java. Anda juga dapat mengimpor dan memanfaatkan pustaka konektor sumber terbuka populer seperti alat pemuatan data, Airbyte, dan Debezium.
alternatif penyerapan
Databricks merekomendasikan pengambilan data untuk sebagian besar kasus penggunaan karena dapat menangani volume data yang tinggi, kueri dengan latensi rendah, dan batas API dari pihak ketiga. Penyerapan menyalin data dari sistem sumber Anda ke Azure Databricks, yang menghasilkan data duplikat yang mungkin menjadi basi dari waktu ke waktu. Jika Anda tidak ingin menyalin data, Anda bisa menggunakan alat berikut:
- Federasi Lakehouse memungkinkan Anda mengkueri sumber data eksternal tanpa memindahkan data Anda.
- Delta Sharing memungkinkan Anda untuk berbagi data dengan aman di seluruh platform, cloud, dan wilayah.
Namun, jika Anda tidak ingin menyalin data, gunakan Lakehouse Federation atau Delta Sharing.
Kapan menggunakan Delta Sharing
Pilih Berbagi Delta untuk skenario berikut:
- Membatasi duplikasi data
- Mengkueri data sesegar mungkin
Kapan menggunakan Federasi Lakehouse
Pilih Federasi Lakehouse untuk skenario berikut:
- Pelaporan ad hoc atau pekerjaan prototipe konsep di dalam pipeline ETL Anda
Pertimbangan saat memilih metode penyerapan
Pertimbangan | Bimbingan |
---|---|
Sumber data | Jika konektor asli Lakeflow Connect ada untuk sumber data, ini akan menjadi cara paling sederhana untuk menyerap data. Untuk sumber data yang tidak didukung oleh Lakeflow Connect, ekstrak data dari sumbernya lalu gunakan Auto Loader untuk menyerap data ke dalam Databricks. Untuk file lokal, gunakan UI Databricks untuk mengunggah data. |
Latensi | Jika Anda ingin menganalisis data mendekati real time, gunakan streaming untuk memanfaatkan pemrosesan inkremental. Dengan streaming, data tersedia untuk dikueri segera setelah setiap rekaman tiba. Jika tidak, gunakan penyerapan batch. |
Pergerakan data | Jika Anda tidak dapat menyalin data dari sistem sumber Anda ke Databricks, gunakan Lakehouse Federation atau Berbagi Delta. |
Memigrasikan data ke Delta Lake
Untuk mempelajari cara memigrasikan data yang ada ke Delta Lake, lihat Memigrasikan data ke Delta Lake.
COPY INTO (warisan)
Perintah SQL CREATE STREAMING TABLE
adalah alternatif yang direkomendasikan untuk perintah warisan COPY INTO
SQL untuk penyerapan inkremental dari penyimpanan objek cloud. Lihat COPY INTO. Untuk pengalaman penyerapan file yang lebih dapat diskalakan dan kuat, Databricks merekomendasikan agar pengguna SQL memanfaatkan tabel streaming alih-alih COPY INTO
.
Sumber daya tambahan
Apa perbedaan antara streaming dan pemrosesan batch inkremental?