Logo Zephyrnet

Tingkatkan arsitektur data Anda dengan streaming real-time menggunakan Amazon Data Firehose dan Snowflake | Layanan Web Amazon

Tanggal:

Dunia yang serba cepat saat ini menuntut wawasan dan keputusan yang tepat waktu, sehingga mendorong pentingnya streaming data. Data streaming mengacu pada data yang terus-menerus dihasilkan dari berbagai sumber. Sumber data ini, seperti peristiwa clickstream, change data capture (CDC), log aplikasi dan layanan, serta aliran data Internet of Things (IoT) semakin banyak. Snowflake menawarkan dua opsi untuk menghadirkan data streaming ke platformnya: Snowpipe dan Snowflake Snowpipe Streaming. Snowpipe cocok untuk kasus penggunaan penyerapan file (batching), seperti memuat file besar dari Layanan Penyimpanan Sederhana Amazon (Amazon S3) hingga Kepingan Salju. Snowpipe Streaming, fitur baru yang dirilis pada Maret 2023, cocok untuk kasus penggunaan penyerapan rangkaian baris (streaming), seperti memuat aliran data berkelanjutan dari Aliran Data Amazon Kinesis or Amazon Managed Streaming untuk Apache Kafka (AmazonMSK).

Sebelum Snowpipe Streaming, pelanggan AWS menggunakan Snowpipe untuk kedua kasus penggunaan: penyerapan file dan penyerapan rowset. Pertama, Anda menyerap data streaming ke Kinesis Data Streams atau Amazon MSK, lalu menggunakan Amazon Data Firehose untuk menggabungkan dan menulis aliran ke Amazon S3, diikuti dengan menggunakan Snowpipe untuk memuat data ke Snowflake. Namun, proses multi-langkah ini dapat mengakibatkan penundaan hingga satu jam sebelum data tersedia untuk dianalisis di Snowflake. Selain itu, biayanya mahal, terutama bila Anda memiliki file kecil yang harus diunggah Snowpipe ke kluster pelanggan Snowflake.

Untuk mengatasi masalah ini, Amazon Data Firehose kini terintegrasi dengan Snowpipe Streaming, memungkinkan Anda menangkap, mengubah, dan mengirimkan aliran data dari Kinesis Data Streams, Amazon MSK, dan Firehose Direct PUT ke Snowflake dalam hitungan detik dengan biaya rendah. Dengan beberapa klik di konsol Amazon Data Firehose, Anda dapat mengatur aliran Firehose untuk mengirimkan data ke Snowflake. Tidak ada komitmen atau investasi di muka untuk menggunakan Amazon Data Firehose, dan Anda hanya membayar jumlah data yang dialirkan.

Beberapa fitur utama Amazon Data Firehose meliputi:

  • Layanan tanpa server yang terkelola sepenuhnya – Anda tidak perlu mengelola sumber daya, dan Amazon Data Firehose secara otomatis melakukan penskalaan agar sesuai dengan throughput sumber data Anda tanpa administrasi berkelanjutan.
  • Mudah digunakan tanpa kode – Anda tidak perlu menulis lamaran.
  • Pengiriman data waktu nyata – Anda bisa mendapatkan data ke tujuan Anda dengan cepat dan efisien dalam hitungan detik.
  • Integrasi dengan lebih dari 20 layanan AWS – Integrasi yang lancar tersedia untuk banyak layanan AWS, seperti Kinesis Data Streams, Amazon MSK, Amazon VPC Flow Logs, log AWS WAF, Amazon CloudWatch Logs, Amazon EventBridge, AWS IoT Core, dan banyak lagi.
  • Model bayar sesuai pemakaian – Anda hanya membayar volume data yang diproses Amazon Data Firehose.
  • Konektivitas – Amazon Data Firehose dapat terhubung ke subnet publik atau privat di VPC Anda.

Postingan ini menjelaskan bagaimana Anda dapat membawa data streaming dari AWS ke Snowflake dalam hitungan detik untuk melakukan analisis tingkat lanjut. Kami menjelajahi arsitektur umum dan mengilustrasikan cara menyiapkan solusi berkode rendah, tanpa server, dan hemat biaya untuk streaming data latensi rendah.

Ikhtisar solusi

Berikut ini adalah langkah-langkah untuk mengimplementasikan solusi streaming data dari AWS ke Snowflake:

  1. Buat database, skema, dan tabel Snowflake.
  2. Buat aliran data Kinesis.
  3. Buat aliran pengiriman Firehose dengan Kinesis Data Streams sebagai sumber dan Snowflake sebagai tujuannya menggunakan tautan pribadi yang aman.
  4. Untuk menguji penyiapan, buat data aliran sampel dari Generator Data Amazon Kinesis (KDG) dengan aliran pengiriman Firehose sebagai tujuannya.
  5. Kueri tabel Snowflake untuk memvalidasi data yang dimuat ke Snowflake.

Solusinya digambarkan dalam diagram arsitektur berikut.

Prasyarat

Anda harus memiliki prasyarat berikut:

Buat database, skema, dan tabel Snowflake

Selesaikan langkah-langkah berikut untuk menyiapkan data Anda di Snowflake:

  • Masuk ke akun Snowflake Anda dan buat database:
    create database adf_snf;

  • Buat skema di database baru:
    create schema adf_snf.kds_blog;

  • Buat tabel dalam skema baru:
    create or replace table iot_sensors
    (sensorId number,
    sensorType varchar,
    internetIP varchar,
    connectionTime timestamp_ntz,
    currentTemperature number
    );

Buat aliran data Kinesis

Selesaikan langkah-langkah berikut untuk membuat aliran data Anda:

  • Di konsol Kinesis Data Streams, pilih Aliran data di panel navigasi.
  • Pilih Buat aliran data.
  • Untuk Nama aliran data, masukkan nama (misalnya, KDS-Demo-Stream).
  • Biarkan pengaturan lainnya sebagai default.
  • Pilih Buat aliran data.

Buat aliran pengiriman Firehose

Selesaikan langkah-langkah berikut untuk membuat aliran pengiriman Firehose dengan Kinesis Data Streams sebagai sumber dan Snowflake sebagai tujuannya:

  • Di konsol Amazon Data Firehose, pilih Buat aliran Firehose.
  • Untuk sumber, pilih Aliran Data Amazon Kinesis.
  • Untuk Tujuan, pilih Kepingan salju.
  • Untuk aliran data kinesis, telusuri aliran data yang Anda buat sebelumnya.
  • Untuk Nama aliran Firehose, biarkan nama default yang dihasilkan atau masukkan nama pilihan Anda.
  • Bawah Pengaturan koneksi, berikan informasi berikut untuk menghubungkan Amazon Data Firehose ke Snowflake:
    • Untuk URL akun kepingan salju, masukkan URL akun Snowflake Anda.
    • Untuk Pengguna, masukkan nama pengguna yang dihasilkan di prasyarat.
    • Untuk Kunci pribadi, masukkan kunci pribadi yang dihasilkan di prasyarat. Pastikan kunci pribadi dalam format PKCS8. Jangan sertakan PEM header-BEGIN awalan dan footer-END akhiran sebagai bagian dari kunci pribadi. Jika kunci terbagi menjadi beberapa baris, hapus jeda baris.
    • Untuk Peran, pilih Gunakan peran Snowflake khusus dan masukkan IAM role yang memiliki akses untuk menulis ke tabel database.

Anda dapat terhubung ke Snowflake menggunakan konektivitas publik atau pribadi. Jika Anda tidak menyediakan titik akhir VPC, mode konektivitas default adalah publik. Untuk mengizinkan daftar IP Firehose dalam kebijakan jaringan Snowflake Anda, lihat Pilih Kepingan Salju untuk Tujuan Anda. Jika Anda menggunakan URL tautan pribadi, berikan ID VPCE yang digunakan SISTEM$GET_PRIVATELINK_CONFIG:

select SYSTEM$GET_PRIVATELINK_CONFIG();

Fungsi ini mengembalikan representasi JSON dari informasi akun Snowflake yang diperlukan untuk memfasilitasi konfigurasi layanan mandiri konektivitas pribadi ke layanan Snowflake, seperti yang ditunjukkan dalam cuplikan layar berikut.

  • Untuk posting ini, kami menggunakan tautan pribadi, jadi untuk ID Wakil Presiden, masukkan ID VPCE.
  • Bawah Pengaturan konfigurasi basis data, masukkan database Snowflake, skema, dan nama tabel Anda.
  • Dalam majalah Pengaturan cadangan bagian, untuk ember cadangan S3, masukkan keranjang yang Anda buat sebagai bagian dari prasyarat.
  • Pilih Buat aliran Firehose.

Sebagai alternatif, Anda dapat menggunakan an Formasi AWS Cloud templat untuk membuat aliran pengiriman Firehose dengan Snowflake sebagai tujuan daripada menggunakan konsol Amazon Data Firehose.

Untuk menggunakan tumpukan CloudFormation, pilih

BDB-4100-CFN-Peluncuran-Stack

Hasilkan data aliran sampel
Hasilkan contoh data aliran dari KDG dengan aliran data Kinesis yang Anda buat:

{ 
"sensorId": {{random.number(999999999)}}, 
"sensorType": "{{random.arrayElement( ["Thermostat","SmartWaterHeater","HVACTemperatureSensor","WaterPurifier"] )}}", 
"internetIP": "{{internet.ip}}", 
"connectionTime": "{{date.now("YYYY-MM-DDTHH:m:ss")}}", 
"currentTemperature": {{random.number({"min":10,"max":150})}} 
}

Kueri tabel Snowflake

Kueri tabel Snowflake:

select * from adf_snf.kds_blog.iot_sensors;

Anda dapat mengonfirmasi bahwa data yang dihasilkan oleh KDG yang dikirim ke Kinesis Data Streams dimuat ke tabel Snowflake melalui Amazon Data Firehose.

Penyelesaian masalah

Jika data tidak dimuat ke Kinesis Data Steams setelah KDG mengirimkan data ke aliran pengiriman Firehose, segarkan dan pastikan Anda masuk ke KDG.

Jika Anda membuat perubahan apa pun pada definisi tabel tujuan Snowflake, buat ulang aliran pengiriman Firehose.

Membersihkan

Untuk menghindari timbulnya biaya di masa mendatang, hapus sumber daya yang Anda buat sebagai bagian dari latihan ini jika Anda tidak berencana menggunakannya lebih lanjut.

Kesimpulan

Amazon Data Firehose menyediakan cara mudah untuk mengirimkan data ke Snowpipe Streaming, memungkinkan Anda menghemat biaya dan mengurangi latensi hingga hitungan detik. Untuk mencoba Amazon Kinesis Firehose dengan Snowflake, lihat Amazon Data Firehose dengan Snowflake sebagai lab tujuan.


Tentang Penulis

Tukar Bandla adalah Arsitek Solusi Senior di Tim SA Spesialis AWS Analytics. Swapna memiliki hasrat untuk memahami kebutuhan data dan analitik pelanggan serta memberdayakan mereka untuk mengembangkan solusi berbasis cloud yang dirancang dengan baik. Di luar pekerjaan, dia menikmati menghabiskan waktu bersama keluarganya.

Mustafa Mansur adalah Manajer Produk Utama – Teknologi di Amazon Web Services tempat dia bekerja di Amazon Kinesis Data Firehose. Dia berspesialisasi dalam mengembangkan pengalaman produk intuitif yang memecahkan tantangan kompleks bagi pelanggan dalam skala besar. Saat dia tidak bekerja keras di Amazon Kinesis Data Firehose, Anda mungkin akan menemukan Mostafa di lapangan squash, tempat dia suka menghadapi penantang dan menyempurnakan dropshot-nya.

Bosco Alburquerque adalah Arsitek Solusi Mitra Senior di AWS dan memiliki lebih dari 20 tahun pengalaman bekerja dengan produk database dan analitik dari vendor database perusahaan dan penyedia cloud. Dia telah membantu perusahaan teknologi merancang dan mengimplementasikan solusi dan produk analitik data.

tempat_img

Intelijen Terbaru

tempat_img