Ikuti panduan ini untuk memahami ingesti data di Snowflake. Tutorial ini cocok untuk pemula di Snowflake atau siapa pun yang ingin meninjau cepat fungsionalitasnya.
Snowflake adalah platform data cloud-native yang banyak digunakan profesional data berkat skalabilitas, kinerja, dan kesederhanaannya, sehingga ideal untuk berbagai kebutuhan dari analitik hingga data science. Namun, untuk memaksimalkan alat ini, menguasai ingesti data Snowflake sangat penting. Jika Anda baru di platform ini, saya sarankan memulai dengan Tutorial Snowflake untuk Pemula untuk mengenal arsitekturnya terlebih dahulu.
Pipeline ingesti data yang efisien dan dikembangkan dengan baik sangat penting untuk memastikan data tersedia dan andal bagi use case hilir. Baik menangani pembaruan batch berkala maupun aliran data real-time, memilih metode dan alat ingesti yang tepat berdampak langsung pada kinerja dan keterkelolaan pipeline data Anda.
Sebelum masuk ke detail, penting untuk memahami beberapa konsep kunci tentang alur data.
Ingesti batch vs. real-time: Proses batch memuat data pada interval terjadwal dengan mengirimkan potongan data sekaligus. Ingesti real-time memastikan data tersedia hampir secara real-time saat dihasilkan dan terlihat sebagai aliran langsung. Anda dapat mempelajari lebih lanjut dari artikel tentang Batch vs Stream Processing.
Data terstruktur vs. semi-terstruktur: Data terstruktur tertata rapi dalam baris dan kolom, sedangkan data semi-terstruktur (seperti JSON atau Avro) memerlukan penanganan yang lebih fleksibel dan menggunakan tag atau penanda untuk membantu proses ingesti data.
Apa itu Ingesti Data di Snowflake?
Ingesti data mengacu pada proses memindahkan data dari berbagai sumber ke dalam database untuk penyimpanan, pemrosesan, dan analisis. Baik data Anda berasal dari penyimpanan cloud, database, aplikasi, atau event stream, ingesti adalah langkah pertama dalam siklus hidup data di Snowflake.
Arsitektur unik Snowflake memisahkan komputasi dan penyimpanan. Ini memungkinkan proses ingesti data yang disederhanakan tanpa memengaruhi kinerja analitik. Ingesti dapat menargetkan internal stage (di dalam Snowflake) atau external stage (seperti S3 atau Azure Blob Storage), bergantung pada sumber data dan use case. Untuk wawasan lebih lanjut, artikel ini mengulas mendalam tentang Arsitektur Snowflake.
Pertimbangan utama dalam ingesti
Saat merancang pipeline ingesti, ingat Empat V data berikut:
Volume: Seberapa banyak data yang Anda ingest?
Velocity: Seberapa sering data datang?
Variety: Format apa saja yang terlibat (CSV, JSON, Parquet)?
Veracity: Seberapa tepercaya datanya, dan tingkat pembersihan apa yang diperlukan?
Keempat komponen ini penting untuk dipertimbangkan. Volume dan velocity mengharuskan kita mempertimbangkan bandwidth yang tersedia untuk pipeline dan kemampuannya memproses data. Variety dan veracity mengharuskan kita membangun pipeline yang tangguh dan fleksibel yang mampu melakukan pemeriksaan kualitas saat data mengalir.
Metode Ingesti Data di Snowflake
Mari bahas beberapa metode ingesti data yang tersedia di Snowflake. Beberapa metode melibatkan penggunaan perintah seperti COPY INTO, Snowpipe, atau Snowpipe streaming.
Ingesti Batch dengan COPY INTO
Metode ingesti paling mendasar di Snowflake adalah perintah COPY INTO. COPY INTO memuat data dari file yang tersimpan di external stage ke tabel Snowflake. Ini ideal untuk memuat data historis secara massal atau pembaruan batch berkala.
Memuat data dari cloud storage
Anda dapat memuat data dari Amazon S3, Azure Blob Storage, atau Google Cloud Storage dengan membuat external stage yang menghubungkan layanan cloud tersebut ke Snowflake. Dengan path file dan kredensial yang benar, Snowflake membaca dan memproses file secara efisien.
Menangani berbagai format data
COPY INTO mendukung banyak format: CSV, JSON, Avro, ORC, dan Parquet. Saat membuat konektor, ada berbagai opsi tipe format. Daftarnya cukup panjang, tetapi umumnya ada pengaturan untuk mendefinisikan hal-hal seperti format tanggal, delimiter (koma atau nilai lain), encoding, opsi null, dan sebagainya. Saya sangat menyarankan membaca dokumentasi di situs web Snowflake untuk detail lengkap.
Penanganan kesalahan dan pemantauan
Anda dapat mengonfigurasi pengaturan ON_ERROR untuk melewati baris yang bermasalah, membatalkan proses muat, atau mencatat error. Padukan dengan VALIDATION_MODE untuk melacak dan mengembalikan error. Anda dapat menggunakan tabel metadata seperti LOAD_HISTORY yang juga melacak jumlah error yang terjadi selama proses muat.
Ingesti berkelanjutan dengan Snowpipe
Snowpipe memungkinkan ingesti berkelanjutan dengan otomatis mendeteksi dan memuat file baru saat muncul di stage yang ditentukan. Fungsionalitas ini sudah terintegrasi di platform Snowflake. Ia menawarkan integrasi file otomatis, pemicu berbasis peristiwa, dan pemantauan.
Mengotomatiskan ingesti file
Snowpipe dapat dikonfigurasi untuk meng-ingesti file secara otomatis melalui integrasi dengan notifikasi penyimpanan cloud, sehingga mengurangi kebutuhan eksekusi manual. Misalnya, Amazon S3 memiliki notifikasi peristiwa yang memberi tahu pengguna tentang perubahan pada bucket tertentu.
Snowpipe dapat dihubungkan ke pengguna yang menerima notifikasi tersebut. Saat notifikasi peristiwa diterima oleh pengguna itu, Snowpipe akan dipicu untuk memulai proses ingesti data.
Snowflake menyediakan beberapa alat pemantauan dan manajemen error. Tabel metadata PIPE_USAGE_HISTORY memungkinkan pengguna melihat riwayat pemuatan data seperti byte dan file yang diingesti. Tabel VALIDATE_PIPE_LOAD akan memberikan informasi tentang error yang terjadi.
Di dalam Snowpipe, ada pengaturan ON_ERROR yang memungkinkan kita melewati file dan mengirim notifikasi yang memberi tahu kita tentang error tersebut.
Streaming real-time dengan Snowpipe Streaming
Snowpipe Streaming adalah metode terbaru Snowflake untuk mengingesti data streaming real-time dengan latensi sub-detik. Berbeda dengan Snowpipe yang bereaksi terhadap file, Snowpipe Streaming mengingesti data baris demi baris melalui API. Metode-metode ini saling melengkapi, menawarkan fleksibilitas dan efisiensi.
Menggunakan Snowflake Ingest SDK
Snowflake Ingest SDK memungkinkan pengembang menulis aplikasi Java atau Scala yang mendorong data langsung ke Snowflake menggunakan antrean di memori. Aplikasi ini dirancang untuk menerima data tingkat baris dari topik Apache Kafka dan konektor streaming lainnya.
Use case dan manfaat
Sangat cocok untuk data telemetri, clickstream, atau IoT, Snowpipe Streaming memastikan ketersediaan data hampir real-time dengan overhead penyimpanan minimal dan throughput tinggi. Metode ingesti ini tepat ketika Anda membutuhkan data berkecepatan tinggi hampir secara real-time.
Alat untuk Ingesti Data di Snowflake
Dalam proses mengingesti data ke Snowflake menggunakan hal-hal seperti Snowpipe dan Snowpipe Streaming, ada beberapa alat yang dibutuhkan untuk menghubungkan pipeline data dengan benar. Salah satu alat utama adalah Kafka yang umum digunakan sebagai alat komunikasi antara sumber data dan Snowflake. Alternatifnya, ada beberapa alat pihak ketiga seperti Fivetran dan Matillion yang juga dapat mengelola ETL ke Snowflake.
Konektor Snowflake untuk Kafka
Snowflake menawarkan konektor Kafka yang membaca dari topik Kafka dan menulis pesan langsung ke penyimpanan Snowflake. Data dipublikasikan ke Kafka, dan menggunakan Snowpipe atau Snowpipe Streaming, Snowflake dapat mengambil data yang dipublikasikan ini dan mentransfernya ke penyimpanan internal. Ini adalah cara yang sangat fleksibel untuk mentransfer data. Saya merekomendasikan kursus Introduction to Apache Kafka yang membahas kekuatan dan skalabilitas Kafka.
Konfigurasi Kafka dan praktik terbaik
Anda perlu mengonfigurasi Kafka Connect worker dan menyiapkan parameter seperti nama topik, ukuran buffer, dan kredensial Snowflake untuk menyiapkan integrasi dengan benar.
Konfigurasi ini juga memungkinkan kita menetapkan tipe data dan informasi metadata yang ingin kita lacak. Dua cara utama untuk mendefinisikan koneksi ini adalah melalui Confluent (versi Apache Kafka terkelola pihak ketiga) atau secara manual menggunakan Apache Kafka JDK open-source.
Apa pun pilihan Anda, ikuti praktik terbaik berikut:
Gunakan partisi dan pengurutan berbasis kunci untuk menjaga urutan peristiwa.
Optimalkan interval flush untuk menyeimbangkan latensi dan throughput.
Contoh penggunaan Kafka dengan Snowflake SDK untuk data streaming (Dokumentasi Snowflake)
Alat ETL pihak ketiga
Selain Kafka, ada platform ETL pihak ketiga seperti Fivetran, Matillion, dan Talend yang menyediakan solusi ETL/ELT terkelola untuk mengingesti dan mentransformasi data dari ratusan sumber ke Snowflake. Platform pihak ketiga ini sering menawarkan solusi SaaS low-code dan sederhana untuk manajemen data, tetapi memilih platform ini memiliki kekurangannya sendiri.
Kelebihan dan kekurangan alat ETL pihak ketiga
Beberapa aspek memerlukan pertimbangan cermat saat menggunakan alat ETL pihak ketiga, seperti biaya dan fleksibilitas. Meskipun ini jelas pendekatan yang disederhanakan untuk mengingesti data ke Snowflake, mungkin ada beberapa pembatasan yang pada akhirnya membuatnya lebih menantang untuk digunakan.
Kelebihan: Penyiapan no-code, konektor untuk alat SaaS umum, fitur transformasi bawaan, sederhana dan mudah diintegrasikan
Kekurangan: Biaya langganan, kontrol terbatas untuk logika kustom, dan sering kali terikat pada vendor tanpa cara mudah untuk migrasi keluar
Mengetahui batasan ini, saat memutuskan alat yang tepat, Anda perlu mempertimbangkan:
Keahlian teknis tim Anda
Frekuensi dan kebutuhan latensi
Dukungan sistem sumber
Anggaran dan batasan lisensi
Praktik Terbaik untuk Ingesti Data Snowflake
Meskipun merancang pipeline adalah pekerjaan berat, ada beberapa konsep umum dan praktik terbaik yang dapat Anda ikuti untuk memudahkan pekerjaan Anda. Ini ditujukan untuk meningkatkan efisiensi dan meminimalkan biaya.
Optimalkan untuk kinerja dan biaya
Minimalkan ukuran file Anda untuk menurunkan biaya penyimpanan data dengan menggunakan format file seperti gzip atau Parquet. Selain itu, saat data ditransfer, sering kali lebih baik memilih lebih sedikit file berukuran besar daripada banyak file kecil untuk proses salin Anda. File besar tunggal memiliki overhead jaringan yang lebih kecil dibandingkan mentransfer banyak file kecil. Terakhir, jadwalkan pekerjaan batch besar pada jam di luar puncak jika biaya komputasi dan jaringan menjadi perhatian.
Terakhir, pastikan untuk menangani evolusi skema dalam pipeline Anda. Beberapa tipe data seperti Parquet secara alami memungkinkan evolusi skema. Ini berarti ketika skema data berubah dari sumber data, hal itu tidak memengaruhi data historis dan mempertahankan kompatibilitas maju/mundur untuk data.
Pastikan kualitas data dan observabilitas
Hal lain yang perlu dipertimbangkan selama pipeline ingesti data Anda adalah memastikan kualitas data dan observabilitas. Salah satu cara cerdas untuk melakukannya adalah melakukan staging data sebelum mengintegrasikannya ke penyimpanan database akhir Anda. Anda mungkin ingin memeriksa hash dan metadata untuk memastikan akurasi data dan tidak adanya korupsi. Selain itu, alih-alih memberi pengguna akses langsung ke data itu sendiri, membangun view yang dapat menggabungkan berbagai sumber data mungkin memberikan pengalaman pengguna yang lebih baik.
Terakhir, Anda perlu terus memantau dan mencatat kesehatan pipeline data Anda. Siapkan dashboard menggunakan metadata view Snowflake atau alat observabilitas eksternal seperti DataDog atau Monte Carlo untuk melacak keberhasilan ingesti, latensi, dan kegagalan.
Tutorial Praktik: Mengingesti Data ke Snowflake
Di sini kita akan membahas beberapa contoh tingkat tinggi tentang bagaimana Anda dapat membangun pipeline di Snowflake. Perhatikan, langkah tepat Anda mungkin berbeda bergantung pada bagaimana administrator data Anda mengonfigurasi lingkungan Snowflake Anda. Pastikan mengikuti praktik terbaik organisasi Anda!
Prasyarat
Pertama, beberapa prasyarat. Anda memerlukan akun Snowflake yang memungkinkan Anda mengelola database. Beberapa izin akses umum yang Anda perlukan adalah kemampuan membuat skema. Kedua, Anda harus memastikan server yang Anda gunakan memiliki akses ke bucket penyimpanan cloud eksternal atau penyimpanan internal tempat Anda menyimpan data. Bicaralah dengan administrator database Anda tentang hal tersebut.
Langkah 1: Memuat Data Menggunakan COPY INTO
Mari kita bahas contoh sederhana memuat file CSV ke database Snowflake Anda.
1. Siapkan dan unggah data Formatkan file Anda (misalnya CSV) dan unggah ke bucket penyimpanan cloud Anda.
2. Buat stage dan format file
/* specify the file format */CREATEFILE FORMAT my_csv_format TYPE='CSV'/* this will help if there are double quotes or apostrophes in your data */
FIELD_OPTIONALLY_ENCLOSED_BY='"';/* Stage the data using the credentials you have */CREATE STAGE my_stage URL='s3://my-bucket/data/' CREDENTIALS=(AWS_KEY_ID='...' AWS_SECRET_KEY='...');Didukung oleh
3. Jalankan COPY INTO dan Verifikasi
COPY INTO my_table FROM@my_stage FILE_FORMAT =(FORMAT_NAME ='my_csv_format');SELECT*FROM my_table;Didukung oleh
Langkah 2: Mengotomatiskan Ingesti dengan Snowpipe
Membuat ingesti otomatis menggunakan Snowpipe bisa cukup sederhana!
1. Buat Snowpipe
CREATE PIPE my_pipe
AUTO_INGEST =TRUE
AWS_SNS_TOPIC ='arn:aws:sns:us-west-2:001234567890:s3_mybucket'AS
COPY INTO my_table
FROM@my_stage
FILE_FORMAT =(TYPE= ‘CSV’);Didukung oleh
2. Konfigurasikan event cloud storage Siapkan notifikasi bucket S3 untuk memicu pipe menggunakan SNS/SQS. Untuk detail selengkapnya, saya akan mengikuti panduan tentang AWS SNS dari Datacamp.
3. Pantau ingesti
Pastikan untuk melakukan query pada tabel metadata SNOWPIPE_EXECUTION_HISTORY untuk melihat aktivitas pipe.
Langkah 3: Streaming Data dengan Snowpipe Streaming
Menyiapkan Snowpipe Streaming bisa cukup intens dan agak lebih detail daripada yang dapat kita bahas di sini. Saya akan membahas beberapa langkah mendasar, tetapi saya terutama menyarankan membaca contoh-contoh dari dokumentasi Snowflake Streaming tentang cara membangun client SDK.
Siapkan SDK: Instal Snowflake Ingest SDK di aplikasi Java atau Scala Anda. Lalu, konfigurasikan pengaturan koneksi API di file profile.json. Properti yang diperlukan mencakup kredensial otorisasi, URL untuk Snowflake, dan pengguna. Ini memungkinkan SDK terhubung ke server Snowflake Anda. Tulis sisa skrip Java Anda untuk menangani data yang masuk, termasuk metode insertRows.
Streaming data dengan aplikasi contoh: Dorong data dari konektor Kafka Anda menggunakan ClientSDK untuk memanggil API Snowflake Anda.
Pantau dan tangani error: Tangkap pengecualian SDK, ulangi permintaan yang gagal, dan pantau metrik ingesti menggunakan tabel metadata dan dashboard. Pastikan API Anda dirancang untuk mencegah error dan mengirim notifikasi kesalahan.
Kesimpulan
Snowflake menawarkan rangkaian metode ingesti data yang tangguh dan fleksibel—mulai dari pemuatan batch tradisional hingga streaming real-time. Dengan memahami alat dan teknik yang tersedia, tim data dapat merancang pipeline yang andal, berkinerja tinggi, dan hemat biaya. Baik Anda baru memulai atau mengoptimalkan solusi skala enterprise, menguasai ingesti data Snowflake adalah langkah krusial dalam membangun tumpukan data modern. Jika Anda ingin mempelajari lebih lanjut tentang Snowflake, saya sangat merekomendasikan sumber berikut:
Apa perbedaan antara Snowpipe dan Snowpipe Streaming?⌄
Snowpipe mengingesti data dari file (biasanya disimpan di cloud storage) saat file tersebut masuk, menggunakan pemicu berbasis peristiwa. Snowpipe Streaming mengingesti data langsung dari aplikasi secara real-time, baris demi baris, menggunakan SDK, sehingga memungkinkan latensi sub-detik.
Dapatkah Snowflake otomatis mendeteksi perubahan skema pada data masuk saya?⌄
Tidak secara otomatis. Anda perlu menerapkan strategi evolusi skema secara manual atau dengan alat yang mendukungnya. Untuk data semi-terstruktur seperti JSON, Anda dapat menggunakan kolom variant untuk mengakomodasi struktur dinamis.
Bagaimana saya memantau apakah ingesti data saya berjalan dengan benar?⌄
Snowflake menyediakan beberapa view seperti LOAD_HISTORY, PIPE_USAGE_HISTORY, dan TASK_HISTORY untuk melacak peristiwa ingesti, error, dan kinerja. Anda juga dapat berintegrasi dengan alat observabilitas untuk peringatan dan dashboard.
Format file apa yang didukung Snowflake untuk ingesti?⌄
Snowflake mendukung CSV, JSON, Avro, ORC, Parquet, dan XML. Anda menentukan bagaimana file harus diinterpretasikan menggunakan objek file format.
Dapatkah saya mengingesti data ke Snowflake dari sumber selain cloud storage atau Kafka?⌄
Ya. Anda dapat mengingesti data menggunakan alat pihak ketiga (misalnya, Fivetran, Matillion, Airbyte), REST API Snowflake, Snowpipe Streaming, atau skrip kustom menggunakan konektor atau SDK.
Kuasai pertanyaan wawancara basis data, dari konsep SQL dasar hingga skenario desain sistem tingkat lanjut. Panduan mendalam ini mencakup semua yang Anda perlukan untuk sukses di wawancara DBMS dan meraih peran berikutnya.
Temukan alasan mengapa Anda sebaiknya (tidak) menggunakan spaghetti plot untuk menyampaikan ketidakpastian jalur prediksi badai serta dampaknya terhadap interpretasi.
Coba langsung Snowflake! Pelajari cara mengakses, memodelkan, dan mengelola data dalam pengenalan interaktif ini untuk insinyur data, analis, dan profesional BI.
Snowflake adalah platform data cloud-native yang banyak digunakan profesional data berkat skalabilitas, kinerja, dan kesederhanaannya, sehingga ideal untuk berbagai kebutuhan dari analitik hingga data science. Namun, untuk memaksimalkan alat ini, menguasai ingesti data Snowflake sangat penting. Jika Anda baru di platform ini, saya sarankan memulai dengan Tutorial Snowflake untuk Pemula untuk mengenal arsitekturnya terlebih dahulu.
Pipeline ingesti data yang efisien dan dikembangkan dengan baik sangat penting untuk memastikan data tersedia dan andal bagi use case hilir. Baik menangani pembaruan batch berkala maupun aliran data real-time, memilih metode dan alat ingesti yang tepat berdampak langsung pada kinerja dan keterkelolaan pipeline data Anda.
Sebelum masuk ke detail, penting untuk memahami beberapa konsep kunci tentang alur data.
Apa itu Ingesti Data di Snowflake?
Ingesti data mengacu pada proses memindahkan data dari berbagai sumber ke dalam database untuk penyimpanan, pemrosesan, dan analisis. Baik data Anda berasal dari penyimpanan cloud, database, aplikasi, atau event stream, ingesti adalah langkah pertama dalam siklus hidup data di Snowflake.
Arsitektur unik Snowflake memisahkan komputasi dan penyimpanan. Ini memungkinkan proses ingesti data yang disederhanakan tanpa memengaruhi kinerja analitik. Ingesti dapat menargetkan internal stage (di dalam Snowflake) atau external stage (seperti S3 atau Azure Blob Storage), bergantung pada sumber data dan use case. Untuk wawasan lebih lanjut, artikel ini mengulas mendalam tentang Arsitektur Snowflake.
Pertimbangan utama dalam ingesti
Saat merancang pipeline ingesti, ingat Empat V data berikut:
Keempat komponen ini penting untuk dipertimbangkan. Volume dan velocity mengharuskan kita mempertimbangkan bandwidth yang tersedia untuk pipeline dan kemampuannya memproses data. Variety dan veracity mengharuskan kita membangun pipeline yang tangguh dan fleksibel yang mampu melakukan pemeriksaan kualitas saat data mengalir.
Metode Ingesti Data di Snowflake
Mari bahas beberapa metode ingesti data yang tersedia di Snowflake. Beberapa metode melibatkan penggunaan perintah seperti
COPY INTO, Snowpipe, atau Snowpipe streaming.Ingesti Batch dengan COPY INTO
Metode ingesti paling mendasar di Snowflake adalah perintah
COPY INTO.COPY INTOmemuat data dari file yang tersimpan di external stage ke tabel Snowflake. Ini ideal untuk memuat data historis secara massal atau pembaruan batch berkala.Memuat data dari cloud storage
Anda dapat memuat data dari Amazon S3, Azure Blob Storage, atau Google Cloud Storage dengan membuat external stage yang menghubungkan layanan cloud tersebut ke Snowflake. Dengan path file dan kredensial yang benar, Snowflake membaca dan memproses file secara efisien.
Menangani berbagai format data
COPY INTOmendukung banyak format: CSV, JSON, Avro, ORC, dan Parquet. Saat membuat konektor, ada berbagai opsi tipe format. Daftarnya cukup panjang, tetapi umumnya ada pengaturan untuk mendefinisikan hal-hal seperti format tanggal, delimiter (koma atau nilai lain), encoding, opsi null, dan sebagainya. Saya sangat menyarankan membaca dokumentasi di situs web Snowflake untuk detail lengkap.Penanganan kesalahan dan pemantauan
Anda dapat mengonfigurasi pengaturan
ON_ERRORuntuk melewati baris yang bermasalah, membatalkan proses muat, atau mencatat error. Padukan denganVALIDATION_MODEuntuk melacak dan mengembalikan error. Anda dapat menggunakan tabel metadata sepertiLOAD_HISTORYyang juga melacak jumlah error yang terjadi selama proses muat.Ingesti berkelanjutan dengan Snowpipe
Snowpipe memungkinkan ingesti berkelanjutan dengan otomatis mendeteksi dan memuat file baru saat muncul di stage yang ditentukan. Fungsionalitas ini sudah terintegrasi di platform Snowflake. Ia menawarkan integrasi file otomatis, pemicu berbasis peristiwa, dan pemantauan.
Mengotomatiskan ingesti file
Snowpipe dapat dikonfigurasi untuk meng-ingesti file secara otomatis melalui integrasi dengan notifikasi penyimpanan cloud, sehingga mengurangi kebutuhan eksekusi manual. Misalnya, Amazon S3 memiliki notifikasi peristiwa yang memberi tahu pengguna tentang perubahan pada bucket tertentu.
Snowpipe dapat dihubungkan ke pengguna yang menerima notifikasi tersebut. Saat notifikasi peristiwa diterima oleh pengguna itu, Snowpipe akan dipicu untuk memulai proses ingesti data.
Diagram Ingesti Data Otomatis (Dokumentasi Snowflake)
Pemantauan dan manajemen
Snowflake menyediakan beberapa alat pemantauan dan manajemen error. Tabel metadata
PIPE_USAGE_HISTORYmemungkinkan pengguna melihat riwayat pemuatan data seperti byte dan file yang diingesti. TabelVALIDATE_PIPE_LOADakan memberikan informasi tentang error yang terjadi.Di dalam Snowpipe, ada pengaturan
ON_ERRORyang memungkinkan kita melewati file dan mengirim notifikasi yang memberi tahu kita tentang error tersebut.Streaming real-time dengan Snowpipe Streaming
Snowpipe Streaming adalah metode terbaru Snowflake untuk mengingesti data streaming real-time dengan latensi sub-detik. Berbeda dengan Snowpipe yang bereaksi terhadap file, Snowpipe Streaming mengingesti data baris demi baris melalui API. Metode-metode ini saling melengkapi, menawarkan fleksibilitas dan efisiensi.
Menggunakan Snowflake Ingest SDK
Snowflake Ingest SDK memungkinkan pengembang menulis aplikasi Java atau Scala yang mendorong data langsung ke Snowflake menggunakan antrean di memori. Aplikasi ini dirancang untuk menerima data tingkat baris dari topik Apache Kafka dan konektor streaming lainnya.
Use case dan manfaat
Sangat cocok untuk data telemetri, clickstream, atau IoT, Snowpipe Streaming memastikan ketersediaan data hampir real-time dengan overhead penyimpanan minimal dan throughput tinggi. Metode ingesti ini tepat ketika Anda membutuhkan data berkecepatan tinggi hampir secara real-time.
Alat untuk Ingesti Data di Snowflake
Dalam proses mengingesti data ke Snowflake menggunakan hal-hal seperti Snowpipe dan Snowpipe Streaming, ada beberapa alat yang dibutuhkan untuk menghubungkan pipeline data dengan benar. Salah satu alat utama adalah Kafka yang umum digunakan sebagai alat komunikasi antara sumber data dan Snowflake. Alternatifnya, ada beberapa alat pihak ketiga seperti Fivetran dan Matillion yang juga dapat mengelola ETL ke Snowflake.
Konektor Snowflake untuk Kafka
Snowflake menawarkan konektor Kafka yang membaca dari topik Kafka dan menulis pesan langsung ke penyimpanan Snowflake. Data dipublikasikan ke Kafka, dan menggunakan Snowpipe atau Snowpipe Streaming, Snowflake dapat mengambil data yang dipublikasikan ini dan mentransfernya ke penyimpanan internal. Ini adalah cara yang sangat fleksibel untuk mentransfer data. Saya merekomendasikan kursus Introduction to Apache Kafka yang membahas kekuatan dan skalabilitas Kafka.
Konfigurasi Kafka dan praktik terbaik
Anda perlu mengonfigurasi Kafka Connect worker dan menyiapkan parameter seperti nama topik, ukuran buffer, dan kredensial Snowflake untuk menyiapkan integrasi dengan benar.
Konfigurasi ini juga memungkinkan kita menetapkan tipe data dan informasi metadata yang ingin kita lacak. Dua cara utama untuk mendefinisikan koneksi ini adalah melalui Confluent (versi Apache Kafka terkelola pihak ketiga) atau secara manual menggunakan Apache Kafka JDK open-source.
Apa pun pilihan Anda, ikuti praktik terbaik berikut:
Contoh penggunaan Kafka dengan Snowflake SDK untuk data streaming (Dokumentasi Snowflake)
Alat ETL pihak ketiga
Selain Kafka, ada platform ETL pihak ketiga seperti Fivetran, Matillion, dan Talend yang menyediakan solusi ETL/ELT terkelola untuk mengingesti dan mentransformasi data dari ratusan sumber ke Snowflake. Platform pihak ketiga ini sering menawarkan solusi SaaS low-code dan sederhana untuk manajemen data, tetapi memilih platform ini memiliki kekurangannya sendiri.
Kelebihan dan kekurangan alat ETL pihak ketiga
Beberapa aspek memerlukan pertimbangan cermat saat menggunakan alat ETL pihak ketiga, seperti biaya dan fleksibilitas. Meskipun ini jelas pendekatan yang disederhanakan untuk mengingesti data ke Snowflake, mungkin ada beberapa pembatasan yang pada akhirnya membuatnya lebih menantang untuk digunakan.
Mengetahui batasan ini, saat memutuskan alat yang tepat, Anda perlu mempertimbangkan:
Praktik Terbaik untuk Ingesti Data Snowflake
Meskipun merancang pipeline adalah pekerjaan berat, ada beberapa konsep umum dan praktik terbaik yang dapat Anda ikuti untuk memudahkan pekerjaan Anda. Ini ditujukan untuk meningkatkan efisiensi dan meminimalkan biaya.
Optimalkan untuk kinerja dan biaya
Minimalkan ukuran file Anda untuk menurunkan biaya penyimpanan data dengan menggunakan format file seperti gzip atau Parquet. Selain itu, saat data ditransfer, sering kali lebih baik memilih lebih sedikit file berukuran besar daripada banyak file kecil untuk proses salin Anda. File besar tunggal memiliki overhead jaringan yang lebih kecil dibandingkan mentransfer banyak file kecil. Terakhir, jadwalkan pekerjaan batch besar pada jam di luar puncak jika biaya komputasi dan jaringan menjadi perhatian.
Terakhir, pastikan untuk menangani evolusi skema dalam pipeline Anda. Beberapa tipe data seperti Parquet secara alami memungkinkan evolusi skema. Ini berarti ketika skema data berubah dari sumber data, hal itu tidak memengaruhi data historis dan mempertahankan kompatibilitas maju/mundur untuk data.
Pastikan kualitas data dan observabilitas
Hal lain yang perlu dipertimbangkan selama pipeline ingesti data Anda adalah memastikan kualitas data dan observabilitas. Salah satu cara cerdas untuk melakukannya adalah melakukan staging data sebelum mengintegrasikannya ke penyimpanan database akhir Anda. Anda mungkin ingin memeriksa hash dan metadata untuk memastikan akurasi data dan tidak adanya korupsi. Selain itu, alih-alih memberi pengguna akses langsung ke data itu sendiri, membangun view yang dapat menggabungkan berbagai sumber data mungkin memberikan pengalaman pengguna yang lebih baik.
Terakhir, Anda perlu terus memantau dan mencatat kesehatan pipeline data Anda. Siapkan dashboard menggunakan metadata view Snowflake atau alat observabilitas eksternal seperti DataDog atau Monte Carlo untuk melacak keberhasilan ingesti, latensi, dan kegagalan.
Tutorial Praktik: Mengingesti Data ke Snowflake
Di sini kita akan membahas beberapa contoh tingkat tinggi tentang bagaimana Anda dapat membangun pipeline di Snowflake. Perhatikan, langkah tepat Anda mungkin berbeda bergantung pada bagaimana administrator data Anda mengonfigurasi lingkungan Snowflake Anda. Pastikan mengikuti praktik terbaik organisasi Anda!
Prasyarat
Pertama, beberapa prasyarat. Anda memerlukan akun Snowflake yang memungkinkan Anda mengelola database. Beberapa izin akses umum yang Anda perlukan adalah kemampuan membuat skema. Kedua, Anda harus memastikan server yang Anda gunakan memiliki akses ke bucket penyimpanan cloud eksternal atau penyimpanan internal tempat Anda menyimpan data. Bicaralah dengan administrator database Anda tentang hal tersebut.
Langkah 1: Memuat Data Menggunakan
COPY INTOMari kita bahas contoh sederhana memuat file CSV ke database Snowflake Anda.
1. Siapkan dan unggah data Formatkan file Anda (misalnya CSV) dan unggah ke bucket penyimpanan cloud Anda.
2. Buat stage dan format file
3. Jalankan
COPY INTOdan VerifikasiLangkah 2: Mengotomatiskan Ingesti dengan Snowpipe
Membuat ingesti otomatis menggunakan Snowpipe bisa cukup sederhana!
1. Buat Snowpipe
2. Konfigurasikan event cloud storage Siapkan notifikasi bucket S3 untuk memicu pipe menggunakan SNS/SQS. Untuk detail selengkapnya, saya akan mengikuti panduan tentang AWS SNS dari Datacamp.
3. Pantau ingesti
Pastikan untuk melakukan query pada tabel metadata
SNOWPIPE_EXECUTION_HISTORYuntuk melihat aktivitas pipe.Langkah 3: Streaming Data dengan Snowpipe Streaming
Menyiapkan Snowpipe Streaming bisa cukup intens dan agak lebih detail daripada yang dapat kita bahas di sini. Saya akan membahas beberapa langkah mendasar, tetapi saya terutama menyarankan membaca contoh-contoh dari dokumentasi Snowflake Streaming tentang cara membangun client SDK.
profile.json. Properti yang diperlukan mencakup kredensial otorisasi, URL untuk Snowflake, dan pengguna. Ini memungkinkan SDK terhubung ke server Snowflake Anda. Tulis sisa skrip Java Anda untuk menangani data yang masuk, termasuk metodeinsertRows.Kesimpulan
Snowflake menawarkan rangkaian metode ingesti data yang tangguh dan fleksibel—mulai dari pemuatan batch tradisional hingga streaming real-time. Dengan memahami alat dan teknik yang tersedia, tim data dapat merancang pipeline yang andal, berkinerja tinggi, dan hemat biaya. Baik Anda baru memulai atau mengoptimalkan solusi skala enterprise, menguasai ingesti data Snowflake adalah langkah krusial dalam membangun tumpukan data modern. Jika Anda ingin mempelajari lebih lanjut tentang Snowflake, saya sangat merekomendasikan sumber berikut: