View a markdown version of this page

AWS Glue Streaming - AWS Lem

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

AWS Glue Streaming

AWS Glue Streaming, komponen dari AWS Glue, memungkinkan Anda menangani data streaming secara efisien hampir real-time, memberdayakan Anda untuk melakukan tugas-tugas penting seperti konsumsi data, pemrosesan, dan pembelajaran mesin. Menggunakan kerangka kerja Apache Spark Stre AWS Glue aming, Streaming menyediakan layanan tanpa server yang dapat menangani data streaming dalam skala besar. AWS Glue menyediakan berbagai pengoptimalan di atas Apache Spark seperti infrastruktur tanpa server, penskalaan otomatis, pengembangan pekerjaan visual, notebook instant-on untuk pekerjaan streaming, dan peningkatan kinerja lainnya.

Kasus penggunaan untuk streaming

Beberapa kasus penggunaan umum untuk AWS Glue Streaming meliputi:

Near-real-time pemrosesan data: AWS Glue Streaming memungkinkan organisasi untuk memproses data streaming hampir secara real-time, memungkinkan mereka memperoleh wawasan dan membuat keputusan tepat waktu berdasarkan informasi terbaru.

Deteksi penipuan: Anda dapat menggunakan AWS Glue Streaming untuk analisis real-time data streaming, membuatnya berharga untuk mendeteksi aktivitas penipuan, seperti penipuan kartu kredit, intrusi jaringan, atau penipuan online. Dengan terus memproses dan menganalisis data yang masuk, Anda dapat dengan cepat mengidentifikasi pola atau anomali yang mencurigakan.

Analisis media sosial: AWS Glue Streaming dapat memproses data media sosial real-time, seperti tweet, posting, atau komentar, memungkinkan organisasi untuk memantau tren, analisis sentimen, dan mengelola reputasi merek secara real-time.

Analisis Internet of Things (IoT): AWS Glue Streaming cocok untuk menangani dan menganalisis aliran data berkecepatan tinggi yang dihasilkan oleh perangkat IoT, sensor, dan mesin yang terhubung. Ini memungkinkan pemantauan waktu nyata, deteksi anomali, pemeliharaan prediktif, dan kasus penggunaan analitik IoT lainnya.

Analisis clickstream: Stre AWS Glue aming dapat memproses dan menganalisis data clickstream real-time dari situs web atau aplikasi seluler. Hal ini memungkinkan bisnis untuk mendapatkan wawasan tentang perilaku pengguna, mempersonalisasi pengalaman pengguna, dan mengoptimalkan kampanye pemasaran berdasarkan data clickstream real-time.

Pemantauan dan analisis log: AWS Glue Streaming dapat terus memproses dan menganalisis data log dari server, aplikasi, atau perangkat jaringan secara real-time. Ini membantu dalam mendeteksi anomali, memecahkan masalah, dan memantau kesehatan dan kinerja sistem.

Sistem rekomendasi: AWS Glue Streaming dapat memproses data aktivitas pengguna secara real-time dan memperbarui model rekomendasi secara dinamis. Hal ini memungkinkan rekomendasi yang dipersonalisasi dan real-time berdasarkan perilaku dan preferensi pengguna.

Ini adalah beberapa contoh dari beragam kasus penggunaan di mana AWS Glue Streaming dapat diterapkan. Integrasinya dengan AWS ekosistem dan layanan terkelola menjadikannya pilihan yang nyaman untuk pemrosesan aliran waktu nyata dan analitik di cloud.

Apa manfaat menggunakan AWS Glue Streaming?

Manfaat menggunakan AWS Glue Streaming adalah sebagai berikut:

  • Tanpa server: AWS Glue Streaming tanpa server, menghilangkan kebutuhan untuk mengelola infrastruktur. Ini mengurangi overhead operasional dan memungkinkan pengguna untuk fokus pada pemrosesan data dan tugas analitik daripada manajemen infrastruktur.

  • Penskalaan otomatis: AWS Glue Streaming menyediakan kemampuan penskalaan otomatis, secara dinamis menyesuaikan kapasitas pemrosesan berdasarkan beban kerja. Secara otomatis menskalakan atau masuk untuk menangani fluktuasi volume data, memastikan kinerja dan pemanfaatan sumber daya yang optimal.

  • Pengembangan visual: Pengembangan pekerjaan streaming bisa rumit. AWS Glue Streaming mengatasi tantangan ini dengan menawarkan AWS Glue Studio, alat penulisan visual. AWS Glue Studio menyederhanakan proses pembuatan alur kerja streaming dan memungkinkan pengembang untuk merancang dan mengelola aplikasi streaming secara visual, mengurangi kurva pembelajaran dan meningkatkan produktivitas.

  • Cost-effectiveSebagai layanan tanpa server, AWS Glue Streaming menawarkan efisiensi biaya dengan menghilangkan kebutuhan untuk penyediaan dan pemeliharaan infrastruktur. Pengguna ditagih berdasarkan sumber daya yang dikonsumsi selama pelaksanaan pekerjaan streaming, memungkinkan pengoptimalan biaya dan penskalaan berdasarkan penggunaan aktual.

  • Menangani beban kerja yang kompleks: AWS Glue Streaming dirancang untuk menangani beban kerja streaming yang kompleks. Ini dapat memproses dan menganalisis volume besar data real-time, mendukung transformasi lanjutan, dan berintegrasi dengan AWS layanan lain, memungkinkan pipeline data streaming yang canggih dan alur kerja analitik.

  • Tanpa penguncian: AWS Glue Streaming memberikan fleksibilitas dan menghindari penguncian vendor. Pengguna dapat memanfaatkan AWS Glue Streaming sebagai bagian dari AWS ekosistem yang lebih luas, mengintegrasikannya dengan AWS layanan lain dengan mulus. Hal ini memungkinkan integrasi yang mudah dengan sumber data, aplikasi, dan layanan yang ada tanpa terikat pada teknologi atau platform tertentu.

Kapan harus digunakan AWS Glue Streaming?

Ada banyak opsi dalam hal kasus penggunaan streaming. Kami merekomendasikan AWS Glue streaming dalam skenario berikut.

  1. Jika Anda sudah menggunakan AWS Glue atau Spark untuk pemrosesan batch, AWS Glue Streaming adalah pilihan ideal untuk Anda. Ini memberikan transisi mulus untuk membangun pekerjaan streaming tanpa perlu mempelajari bahasa atau kerangka kerja baru. Memanfaatkan pengetahuan dan infrastruktur Anda yang ada, AWS Glue Streaming menyederhanakan proses pengembangan pekerjaan dan memungkinkan Anda memperluas kemampuan pemrosesan data Anda dengan mudah ke skenario streaming real-time.

  2. Jika Anda memerlukan layanan atau produk terpadu untuk menangani beban kerja batch, streaming, dan berbasis peristiwa, AWS Glue Streaming adalah solusi untuk Anda. Dengan AWS Glue Streaming, Anda dapat mengkonsolidasikan kebutuhan pemrosesan data Anda ke dalam satu kerangka kerja, menghilangkan kerumitan mengelola beberapa sistem. Hal ini memungkinkan pengembangan dan pemeliharaan alur kerja data yang beragam secara efisien sambil memastikan konsistensi dan kompatibilitas di berbagai jenis beban kerja.

  3. AWS Glue Streaming sangat cocok untuk skenario yang melibatkan volume data streaming yang sangat besar dan transformasi kompleks, seperti gabungan antara aliran atau database relasional. Ini dapat secara efisien memproses dan menganalisis aliran data besar-besaran, memungkinkan Anda mengatasi beban kerja yang menuntut dengan mudah. Baik itu penyerapan data berkecepatan tinggi atau manipulasi data yang rumit, skalabilitas AWS Glue Streaming dan kemampuan pemrosesan lanjutan memastikan kinerja optimal dan hasil yang akurat.

  4. Jika Anda lebih suka pendekatan visual untuk membangun pekerjaan streaming, AWS Glue menawarkan AWS Glue Studio, yang dengannya Anda dapat merancang dan mengelola aplikasi streaming Anda secara visual, menyederhanakan proses pengembangan. Antarmuka intuitif ini memungkinkan pengembang untuk membuat, mengkonfigurasi, dan memantau alur kerja streaming menggunakan antarmuka visual, mengurangi kurva pembelajaran dan meningkatkan produktivitas.

  5. AWS Glue Streaming adalah pilihan yang sangat baik untuk kasus penggunaan hampir real-time di mana ada SLA ketat (Perjanjian Tingkat Layanan) lebih dari 10 detik.

  6. Jika Anda membangun danau data transaksional menggunakan Apache Iceberg, Apache Hudi, atau Delta Lake, AWS Glue Streaming menyediakan dukungan asli untuk format tabel terbuka ini. Integrasi mulus ini memungkinkan Anda memproses data streaming langsung dari danau data transaksional ini, memastikan konsistensi, integritas, dan kompatibilitas data.

  7. Saat perlu menelan data streaming untuk berbagai target data: AWS Glue Streaming menyediakan target asli ke berbagai target data seperti Amazon Redshift, Amazon RDS, Amazon Aurora, Oracle, SQL Server, dan target lainnya.

Sumber data yang didukung

AWS Glue Streaming mendukung sumber data berikut:

  • Amazon Kinesis

  • Amazon MSK (Streaming Terkelola untuk Apache Kafka)

  • Self-managed Apache Kafka

Target data yang didukung

AWS Glue Streaming mendukung berbagai target data seperti:

  • Target data didukung oleh Katalog AWS Glue Data

  • Amazon S3

  • Amazon Redshift

  • MySQL

  • PostgreSQL

  • Oracle

  • Microsoft SQL Server

  • Kepingan salju

  • Setiap database yang dapat dihubungkan menggunakan JDBC

  • Apache Iceberg, Delta dan Apache Hudi

  • AWS Glue Konektor pasar

Mengaktifkan mode real-time untuk pekerjaan streaming

Real-time mode (RTM) adalah model eksekusi baru untuk Spark Structured Streaming tersedia di AWS Glue 6.0. RTM mengurangi latensi ujung ke ujung dari detik atau menit menjadi sub-detik. Real-time mode hanya berlaku untuk pekerjaan Streaming Terstruktur Spark. Ini tidak berlaku untuk Spark Streaming lama (DStreams) atau jenis pekerjaan lainnya.

RTM menggunakanTrigger.RealTime. Tugas berjalan terus menerus dalam jendela batch (default 5 menit) dan memproses catatan saat tiba, daripada mengumpulkan data lintas interval. Ini berbeda dari model batch mikro default, di manaforEachBatch/melakukan pollingTrigger.ProcessingTime, memproses, komit, dan memulai ulang tugas setiap interval.

penting

RTM memerlukan opt-in eksplisit melalui argumen pekerjaan. Jika tidak ada cukup slot tugas untuk menutupi semua partisi sumber, RTM diam-diam menjatuhkan partisi yang tidak ditetapkan. Anda harus menyediakan pekerja yang cukup untuk menutupi semua partisi Kafka Anda.

Prasyarat

Sebelum mengaktifkan mode real-time, konfirmasikan bahwa pekerjaan Anda memenuhi persyaratan berikut:

  • AWS Glue versi 6.0

  • Pekerjaan harus menggunakan Spark Structured Streaming. Real-time mode tidak berlaku untuk Spark Streaming lama (DStreams) atau jenis pekerjaan lainnya.

  • Jenis pekerjaan harus Spark Streaming (gluestreamingperintah)

  • Bahasa pekerjaan harus Scala (--job-language scala). PySpark Dukungan RTM tidak tersedia sampai Spark 4.2.

  • Hanya sumber Kafka. Amazon Kinesis tidak didukung untuk RTM di AWS Glue 6.0.

  • Hanya operasi stateless (pilih, filter, proyek, peta). Operasi stateful seperti agregasi, gabungan, deduplikasi, dan operasi berjendela tidak didukung.

  • Mode keluaran harus Update. Mode menambahkan tidak didukung dengan RTM.

  • Auto-scaling tidak kompatibel dengan mode real-time. Jangan aktifkan penskalaan otomatis untuk pekerjaan RTM. Konfigurasikan jumlah pekerja tetap yang cukup untuk mencakup semua partisi Kafka dalam topik sumber Anda.

Kapan menggunakan mode real-time

Real-time mode dirancang untuk kelas tertentu dari beban kerja streaming. Pertimbangkan untuk menggunakan mode real-time saat:

  • Anda memerlukan latensi ujung ke ujung sub-detik dan latensi batch mikro (1-2 detik atau lebih) terlalu tinggi untuk kasus penggunaan Anda.

  • Pipeline Anda melakukan transformasi stateless seperti memfilter, memproyeksikan, memperkaya, atau merutekan catatan dari Kafka ke Kafka atau sink lainnya.

  • Anda memiliki jumlah partisi Kafka yang tetap dan dapat diprediksi dan dapat menyediakan pekerja yang sesuai.

  • Pekerjaan Anda ditulis di Scala.

Lanjutkan menggunakan mode mikro-batch ketika:

  • Anda memerlukan operasi stateful seperti agregasi, gabungan, deduplikasi, atau perhitungan berjendela.

  • Anda menggunakan Amazon Kinesis sebagai sumber.

  • Anda menulis PySpark pekerjaan.

  • Anda mengandalkan penskalaan otomatis untuk menangani volume data variabel.

  • Anda menggunakan forEachBatch atau GlueContext streaming API.

  • Second-level latensi dapat diterima untuk kasus penggunaan Anda.

Cara kerja mode waktu nyata

Berikut ini menjelaskan perbedaan antara model batch mikro dan mode real-time:

Micro-batch Modus

Setiap interval meluncurkan tugas, membaca data yang terakumulasi, memproses data, melakukan pemeriksaan, mengakhiri tugas, dan mengulangi. Latensi minimum adalah sekitar 1-2 detik.

Real-time Modus

Tugas diluncurkan sekali dan dijalankan selama batchDurationMs (default 5 menit). Tugas memproses catatan saat tiba, dengan latensi sub-detik. Pada tenggat waktu, tugas secara kooperatif berhenti. Pengemudi melakukan pos pemeriksaan, dan batch berikutnya meluncurkan kembali tugas.

Kedua mode menggunakan format pos pemeriksaan dan mekanisme pemulihan yang sama. Perbedaan utamanya adalah masa pakai tugas. Micro-batch mode mengakhiri dan meluncurkan kembali tugas setiap interval. Real-time mode membuat tugas berjalan terus menerus dalam jendela batch yang lebih lama.

penting

Jika tidak ada cukup slot tugas untuk memproses semua partisi sumber, RTM diam-diam menjatuhkan partisi yang tidak ditetapkan. Pastikan Anda menyediakan cukup pekerja untuk menutupi semua partisi.

Untuk mengaktifkan mode real-time

Anda mengaktifkan mode waktu nyata dengan menyetel argumen --enable-real-time-mode pekerjaan ketrue. Anda dapat mengatur argumen ini di AWS Glue konsol atau melalui API.

Untuk mengaktifkan mode real-time (konsol)

  1. Buka AWS Glue konsol dan buka pekerjaan streaming Anda.

  2. Pilih tab Detail tugas.

  3. Untuk versi Lem, pilih Lem 6.0. Untuk Jenis, pilih Spark Streaming.

  4. Gulir ke bagian parameter pekerjaan.

  5. Pilih Tambahkan parameter baru.

  6. Untuk Kunci, masukkan --enable-real-time-mode. Untuk Nilai, masukkan true.

  7. Pilih Simpan.

catatan

Garis garis utama diperlukan. Parameter pekerjaan adalah tampilan konsolDefaultArguments.

Untuk mengaktifkan mode waktu nyata (API)

--enable-real-time-modeBendera disimpan dalam DefaultArguments peta definisi pekerjaan. Anda dapat mengaturnya saat membuat atau memperbarui pekerjaan.

Untuk membuat pekerjaan baru (AWS CLI)

Jalankan perintah berikut:

aws glue create-job \ --name my-rtm-job \ --role arn:aws:iam::123456789012:role/MyGlueRole \ --glue-version 6.0 \ --worker-type G.1X --number-of-workers 4 \ --command '{"Name":"gluestreaming","ScriptLocation":"s3://my-bucket/scripts/rtm-job.scala"}' \ --default-arguments '{ "--enable-real-time-mode": "true", "--job-language": "scala", "--class": "GlueApp", "--TempDir": "s3://my-bucket/tmp/" }' \ --region us-east-2
Untuk membuat pekerjaan baru (boto3)

Gunakan kode berikut:

import boto3 glue = boto3.client("glue", region_name="us-east-2") glue.create_job( Name="my-rtm-job", Role="arn:aws:iam::123456789012:role/MyGlueRole", GlueVersion="6.0", WorkerType="G.1X", NumberOfWorkers=4, Command={ "Name": "gluestreaming", "ScriptLocation": "s3://my-bucket/scripts/rtm-job.scala", }, DefaultArguments={ "--enable-real-time-mode": "true", "--job-language": "scala", "--class": "GlueApp", "--TempDir": "s3://my-bucket/tmp/", }, )
Untuk memperbarui pekerjaan yang ada (AWS CLI)

Jalankan perintah berikut:

aws glue update-job \ --job-name my-existing-job \ --job-update '{ "GlueVersion": "6.0", "DefaultArguments": { "--enable-real-time-mode": "true", "--job-language": "scala" } }'

Menulis skrip streaming Anda

Argumen pekerjaan menyatakan maksud untuk menggunakan mode real-time. Script Anda memilih pemicu.

Contoh Scala berikut menunjukkan kueri streaming yang menggunakan: Trigger.RealTime

import org.apache.spark.sql.streaming.Trigger val query = df.writeStream .format("kafka") .outputMode("update") .trigger(Trigger.RealTime(60000L)) // checkpoint interval in milliseconds .start() query.awaitTermination()

Trigger.RealTimemengambil interval pos pemeriksaan dalam milidetik. Diperlukan mode keluaran pembaruan. Tambahkan lemparan mode. OUTPUT_MODE_NOT_SUPPORTED

Anda dapat mencampur mode dalam satu skrip selama bendera diatur:

dfA.writeStream.outputMode("update").trigger(Trigger.RealTime(60000L)).start() dfB.writeStream.outputMode("append").trigger(Trigger.ProcessingTime("30 seconds")).start()

Perilaku saat bendera hilang

Berikut ini menjelaskan bagaimana pekerjaan berperilaku saat --enable-real-time-mode flag tidak disetel:

  • Pekerjaan yang memulai kueri real-time tanpa tanda --enable-real-time-mode gagal saat kueri dimulai. Pesan kegagalan mengarahkan Anda untuk menambahkan argumen.

  • Micro-batch-only pekerjaan tidak pernah terpengaruh oleh tidak adanya bendera ini.

  • Pekerjaan yang menetapkan flag tetapi hanya menggunakan kueri batch mikro juga tidak terpengaruh.

Pertimbangan dan batasan

Pertimbangkan hal berikut saat Anda menggunakan mode real-time:

Partisi turun

Jika tidak ada cukup slot tugas untuk menutupi semua partisi sumber, partisi yang tidak ditetapkan tidak diproses. Penyediaan pekerja untuk menutupi semua partisi Kafka.

Tidak ada penskalaan otomatis

Jangan aktifkan penskalaan otomatis untuk pekerjaan mode waktu nyata. Auto-scalingtidak kompatibel dengan RTM dan memperkenalkan latensi yang menangkal manfaat latensi rendah. Menyediakan jumlah pekerja tetap sama dengan atau lebih besar dari jumlah partisi Kafka dalam topik sumber Anda.

Hanya Kafka

Sumber Amazon Kinesis tidak mendukung RTM di AWS Glue 6.0.

Hanya Scala

PySpark tidak didukung untuk RTM hingga Spark 4.2.

Hanya tanpa kewarganegaraan

Agregasi, gabungan, deduplikasi, operasi berjendela, dan transformWithState tidak didukung.

untuk EachBatch tidak kompatibel

RTM tidak menggunakan forEachBatch model. Gunakan writeStream dengan Trigger.RealTime langsung.

Pemulihan pos pemeriksaan

Saat memulai ulang pekerjaan, RTM pulih dari pos pemeriksaan terakhir. Pos pemeriksaan terjadi setiapbatchDurationMs. Worst-case pemrosesan ulang adalah durasi satu jendela batch (setidaknya sekali semantik).