Lowongan kerja Streaming ETL di AWS Glue - AWS Glue

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

Lowongan kerja Streaming ETL di AWS Glue

Anda dapat membuat tugas extract, transform, and load (ETL) yang berjalan terus menerus, mengkonsumsi data dari sumber streaming seperti Amazon Kinesis Data Streams, Apache Kafka, dan Amazon Managed Streaming for Apache Kafka (Amazon MSK). Tugas tersebut membersihkan dan mengubah data, dan kemudian memuat hasil ke danau data Amazon S3 atau penyimpanan data JDBC.

Selain itu, Anda dapat menghasilkan data untuk Amazon Kinesis Data Streams. Fitur ini hanya tersedia saat menulis AWS Glue skrip. Untuk informasi selengkapnya, lihat Koneksi Kinesis.

Secara default, AWS Glue memproses dan menulis data dalam jendela 100-detik. Hal ini memungkinkan data diproses secara efisien dan memungkinkan agregasi untuk dilakukan pada data yang tiba lebih lambat dari yang diharapkan. Anda dapat memodifikasi ukuran jendela ini untuk meningkatkan ketepatan waktu atau akurasi agregasi. Tugas streaming AWS Glue menggunakan pos pemeriksaan alih-alih bookmark tugas untuk melacak data yang telah dibaca.

catatan

AWS Glue mengenakan biaya per jam untuk tugas ETL streaming saat mereka berjalan.

Video ini membahas tantangan biaya streaming ETL, dan fitur penghematan biaya di. AWS Glue

Membuat tugas ETL streaming melibatkan langkah-langkah berikut:

  1. Untuk sumber streaming Apache Kafka, buatlah sebuah koneksi AWS Glue ke sumber Kafka atau klaster Amazon MSK.

  2. Secara manual, buat tabel Katalog Data untuk sumber streaming.

  3. Buatlah sebuah tugas ETL untuk sumber data streaming. Tentukan properti tugas spesifik-streaming, dan sediakan skrip Anda sendiri atau, secara opsional, modifikasi skrip yang dihasilkan.

Untuk informasi selengkapnya, lihat Streaming ETL di AWS Glue.

Saat membuat tugas ETL streaming untuk Amazon Kinesis Data Streams, Anda tidak perlu membuat koneksi AWS Glue. Namun demikian, jika ada koneksi yang dilampirkan pada tugas ETL streaming AWS Glue yang memiliki Kinesis Data Streams sebagai sumber, maka titik akhir virtual private cloud (VPC) untuk Kinesis diperlukan. Untuk informasi selengkapnya, lihat Membuat titik akhir antarmuka dalam Panduan Pengguna Amazon VPC. Saat menentukan pengaliran Amazon Kinesis Data Streams di akun lain, Anda harus menyiapkan peran dan kebijakan untuk memungkinkan akses lintas akun. Untuk informasi selengkapnya, lihat Contoh: Baca Dari Pengaliran Kinesis di Akun Berbeda.

AWS Gluestreaming pekerjaan ETL dapat mendeteksi data terkompresi secara otomatis, mendekompresi data streaming secara transparan, melakukan transformasi biasa pada sumber input, dan memuat ke penyimpanan output.

AWS Gluemendukung dekompresi otomatis untuk jenis kompresi berikut yang diberikan format input:

Jenis kompresi Berkas Avro Tanggal Avro JSON CSV Grok
BZIP2 Ya Ya Ya Ya Ya
GZIP Tidak Ya Ya Ya Ya
SNAPPY Ya (Snappy mentah) Ya (berbingkai Snappy) Ya (berbingkai Snappy) Ya (berbingkai Snappy) Ya (berbingkai Snappy)
XZ Ya Ya Ya Ya Ya
ZSTD Ya Tidak Tidak Tidak Tidak
DEFLATE Ya Ya Ya Ya Ya

Membuat AWS Glue koneksi untuk aliran data Apache Kafka

Untuk membaca dari pengaliran Apache Kafka, Anda harus membuat sebuah koneksi AWS Glue.

Untuk membuat sebuah koneksi AWS Glue untuk sumber Kafka (konsol)
  1. Buka AWS Glue konsol di https://console.aws.amazon.com/glue/.

  2. Pada panel navigasi, di Katalog data, pilih Koneksi.

  3. Pilih Tambahkan koneksi, dan pada halaman Siapkan properti koneksi Anda, masukkan nama koneksi.

    catatan

    Untuk informasi selengkapnya tentang menentukan properti koneksi, lihat properti AWS Glue koneksi. .

  4. Untuk Jenis koneksi, pilih Kafka.

  5. Untuk URL server bootstrap Kafka, masukkan host dan nomor port untuk broker bootstrap untuk klaster Amazon MSK atau klaster Apache Kafka. Gunakan hanya titik akhir Keamanan Lapisan Pengangkutan (TLS) untuk membangun koneksi awal ke klaster Kafka. Tidak mendukung titik akhir teks biasa.

    Berikut ini adalah contoh daftar pasangan nama host dan nomor port untuk klaster Amazon MSK.

    myserver1.kafka.us-east-1.amazonaws.com:9094,myserver2.kafka.us-east-1.amazonaws.com:9094, myserver3.kafka.us-east-1.amazonaws.com:9094

    Untuk informasi selengkapnya tentang mendapatkan informasi broker bootstrap, lihat Mendapatkan Bootstrap Broker untuk Klaster Amazon MSK dalam Panduan Developer Amazon Managed Streaming for Apache Kafka.

  6. Jika Anda ingin koneksi yang aman ke sumber data Kafka, pilih Memerlukan koneksi SSL, dan untuk Lokasi sertifikat CA privat Kafka, masukkan path Amazon S3 yang valid ke sebuah sertifikat SSL khusus.

    Untuk koneksi SSL ke Kafka dikelola sendiri, sertifikat khusus tersebut bersifat wajib. Ini bersifat opsional untuk Amazon MSK.

    Untuk informasi selengkapnya tentang menentukan sebuah sertifikat khusus untuk Kafka, lihat AWS GlueProperti koneksi SSL.

  7. Gunakan AWS Glue Studio atau AWS CLI untuk menentukan metode otentikasi klien Kafka. Untuk mengakses AWS Glue Studio pilih AWS Gluedari menu ETL di panel navigasi kiri.

    Untuk informasi selengkapnya tentang metode otentikasi klien Kafka, lihat. AWS GlueProperti koneksi Kafka untuk otentikasi klien

  8. Secara opsional, masukkan deskripsi, dan kemudian pilih Selanjutnya.

  9. Untuk klaster Amazon MSK, tentukan virtual private cloud (VPC), subnet, dan grup keamanan dari klaster tersebut. Informasi VPC bersifat opsional untuk Kafka yang dikelola sendiri.

  10. Pilih Selanjutnya untuk meninjau semua properti koneksi, dan kemudian pilih Selesai.

Untuk informasi selengkapnya tentang koneksi AWS Glue, lihat Menghubungkan ke data.

AWS GlueProperti koneksi Kafka untuk otentikasi klien

Otentikasi SASL/GSSAPI (Kerberos)

Memilih metode otentikasi ini akan memungkinkan Anda untuk menentukan properti Kerberos.

Kerberos Keytab

Pilih lokasi file tab tombol. Keytab menyimpan kunci jangka panjang untuk satu atau lebih prinsipal. Untuk informasi selengkapnya, lihat Dokumentasi MIT Kerberos: Keytab.

Kerberos berkas krb5.conf

Pilih file krb5.conf. Ini berisi ranah default (jaringan logis, mirip dengan domain, yang mendefinisikan sekelompok sistem di bawah KDC yang sama) dan lokasi server KDC. Untuk informasi lebih lanjut, lihat Dokumentasi MIT Kerberos: krb5.conf.

Kepala sekolah Kerberos dan nama layanan Kerberos

Masukkan nama kepala dan layanan Kerberos. Untuk informasi lebih lanjut, lihat Dokumentasi MIT Kerberos: Kepala sekolah Kerberos.

Otentikasi SASL/SCRAM-SHA-512

Memilih metode otentikasi ini akan memungkinkan Anda untuk menentukan kredensyal otentikasi.

AWS Secrets Manager

Cari token Anda di kotak Pencarian dengan mengetikkan nama atau ARN.

Nama pengguna dan kata sandi penyedia secara langsung

Cari token Anda di kotak Pencarian dengan mengetikkan nama atau ARN.

Otentikasi klien SSL

Memilih metode otentikasi ini memungkinkan Anda untuk memilih lokasi keystore klien Kafka dengan menjelajahi Amazon S3. Secara opsional, Anda dapat memasukkan kata sandi keystore klien Kafka dan kata sandi kunci klien Kafka.

Autentikasi IAM

Metode otentikasi ini tidak memerlukan spesifikasi tambahan dan hanya berlaku jika sumber Streaming adalah MSK Kafka.

Otentikasi SASL/PLAIN

Memilih metode otentikasi ini memungkinkan Anda untuk menentukan kredensyal otentikasi.

Membuat tabel Katalog Data untuk sumber streaming

Tabel Katalog Data yang menentukan properti aliran data sumber, termasuk skema data dapat dibuat secara manual untuk sumber streaming. Tabel ini digunakan sebagai sumber data untuk tugas ETL streaming.

Jika Anda tidak tahu skema data dalam aliran data sumber, maka Anda dapat membuat tabel tanpa skema. Kemudian ketika Anda membuat tugas ETL streaming, Anda dapat mengaktifkan fungsi deteksi skema AWS Glue. AWS Glue akan menentukan skema dari data streaming.

Gunakan AWS Gluekonsol, AWS Command Line Interface (AWS CLI), atau AWS Glue API untuk membuat tabel. Untuk informasi selengkapnya tentang cara membuat sebuah tabel secara manual dengan konsol AWS Glue, lihat Tabel AWS Glue.

catatan

Anda tidak dapat menggunakan AWS Lake Formation konsol untuk membuat tabel; Anda harus menggunakan AWS Glue konsol.

Juga mempertimbangkan informasi berikut untuk sumber streaming dalam format Avro atau untuk data log yang dapat Anda terapkan pola Grok untuknya.

Sumber data Kinesis

Saat membuat tabel, atur properti ETL streaming berikut (konsol).

Jenis Sumber

Kinesis

Untuk sebuah sumber Kinesis pada akun yang sama:
Wilayah

AWS Wilayah tempat layanan Amazon Kinesis Data Streams berada. Nama pengaliran Wilayah dan Kinesis bersama-sama diterjemahkan ke Stream ARN.

Contoh: https://kinesis.us-east-1.amazonaws.com

Nama pengaliran Kinesis

Nama pengaliran seperti yang dijelaskan dalam Membuat Pengaliran dalam Panduan Developer Amazon Kinesis Data Streams.

Untuk sumber Kinesis di akun lain, lihat contoh ini untuk menyiapkan peran dan kebijakan untuk memungkinkan akses lintas akun. Konfigurasikan pengaturan ini:
ARN Streaming

ARN dari pengaliran data Kinesis dimana konsumen terdaftar. Untuk informasi selengkapnya, lihat Amazon Resource Names (ARN) dan AWS Service Namespaces di. Referensi Umum AWS

ARN Peran yang Diambil

Amazon Resource Name (ARN) dari peran yang diambil.

Nama sesi (opsional)

Sebuah pengenal untuk sesi peran yang diambil.

Gunakan nama sesi peran untuk mengidentifikasi sebuah sesi secara unik ketika peran yang sama diambil oleh prinsipal utama yang berbeda atau untuk alasan yang berbeda. Dalam skenario lintas akun, nama sesi peran dapat dilihat, dan dapat dicatat oleh akun yang memiliki peran tersebut. Nama sesi peran juga digunakan dalam ARN dari prinsipal utama peran yang diambil. Ini berarti bahwa permintaan API lintas akun berikutnya yang menggunakan kredenal keamanan sementara akan mengekspos nama sesi peran ke akun eksternal di log mereka. AWS CloudTrail

Mengkonfigurasi properti ETL streaming untuk Amazon Kinesis Data Streams (API AWS Glue atau AWS CLI)
  • Untuk menyiapkan properti ETL streaming untuk sebuah sumber Kinesis di akun yang sama, tentukan parameter streamName dan endpointUrl dalam struktur StorageDescriptor dari operasi API CreateTable atau fungsi perintah CLI create_table.

    "StorageDescriptor": { "Parameters": { "typeOfData": "kinesis", "streamName": "sample-stream", "endpointUrl": "https://kinesis.us-east-1.amazonaws.com" } ... }

    Atau, tentukan streamARN.

    "StorageDescriptor": { "Parameters": { "typeOfData": "kinesis", "streamARN": "arn:aws:kinesis:us-east-1:123456789:stream/sample-stream" } ... }
  • Untuk menyiapkan properti ETL streaming untuk sebuah sumber Kinesis di akun lain, tentukan parameter streamARN, awsSTSRoleARN dan awsSTSSessionName (opsional) dalam struktur StorageDescriptor dari operasi API CreateTable atau fungsi perintah CLI create_table.

    "StorageDescriptor": { "Parameters": { "typeOfData": "kinesis", "streamARN": "arn:aws:kinesis:us-east-1:123456789:stream/sample-stream", "awsSTSRoleARN": "arn:aws:iam::123456789:role/sample-assume-role-arn", "awsSTSSessionName": "optional-session" } ... }

Sumber data Kafka

Saat membuat tabel, atur properti ETL streaming berikut (konsol).

Jenis Sumber

Kafka

Untuk sebuah sumber Kafka:
Nama topik

Nama topik sebagaimana ditentukan dalam Kafka.

Koneksi

Sebuah koneksi AWS Glue yang me-referensi sumber Kafka, seperti yang dijelaskan dalam Membuat AWS Glue koneksi untuk aliran data Apache Kafka.

AWS GlueSumber tabel Schema Registry

Untuk menggunakan AWS Glue Schema Registry untuk pekerjaan streaming, ikuti petunjuk di Kasus penggunaan: AWS Glue Data Catalog untuk membuat atau memperbarui tabel Schema Registry.

Saat ini, AWS Glue Streaming hanya mendukung format Glue Schema Registry Avro dengan inferensi skema disetel ke. false

Catatan dan batasan untuk sumber streaming Avro

Catatan dan pembatasan berikut berlaku untuk sumber streaming dalam format Avro:

  • Ketika skema deteksi diaktifkan, skema Avro tersebut harus disertakan dalam muatan. Saat dimatikan, muatan hanya berisi data saja.

  • Beberapa tipe data Avro tidak didukung dalam bingkai dinamis. Anda tidak dapat menentukan tipe data ini ketika mendefinisikan skema di halaman Menentukan skema di penuntun membuat tabel di konsol AWS Glue. Selama deteksi skema, jenis yang tidak didukung dalam skema Avro dikonversi ke jenis yang didukung sebagai berikut:

    • EnumType => StringType

    • FixedType => BinaryType

    • UnionType => StructType

  • Jika Anda menentukan skema tabel menggunakan halaman Menentukan skema di konsol, maka jenis elemen akar tersirat untuk skema adalah record. Jika Anda ingin jenis elemen akar selain record, misalnya array atau map, Anda tidak dapat menentukan skema menggunakan halaman Menentukan skema. Sebaliknya Anda harus melewatkan halaman itu dan menentukan skema baik sebagai sebuah properti tabel atau dalam skrip ETL.

    • Untuk menentukan skema di properti tabel, selesaikan penuntun membuat tabel, edit detail tabel, dan tambahkan pasangan nilai-kunci baru pada Properti tabel. Gunakan kunci avroSchema, dan masukkan objek skema JSON untuk nilai, seperti yang ditunjukkan pada tangkapan layar berikut.

      Pada judul Properti tabel, ada dua kolom bidang teks. Judul kolom sebelah kiri adalah Kunci, dan judul kolom sebelah kanan adalah Nilai. Pasangan kunci/nilai di baris pertama adalah klasifikasi/avro. Pasangan kunci/nilai di baris kedua adalah avroSchema/{"type":"array","items":"string"}.
    • Untuk menentukan skema dalam skrip ETL, modifikasi pernyataan tugas datasource0 dan tambahkan kunci avroSchema ke argumen additional_options, seperti yang ditunjukkan dalam contoh Python dan Scala berikut.

      Python
      SCHEMA_STRING = ‘{"type":"array","items":"string"}’ datasource0 = glueContext.create_data_frame.from_catalog(database = "database", table_name = "table_name", transformation_ctx = "datasource0", additional_options = {"startingPosition": "TRIM_HORIZON", "inferSchema": "false", "avroSchema": SCHEMA_STRING})
      Scala
      val SCHEMA_STRING = """{"type":"array","items":"string"}""" val datasource0 = glueContext.getCatalogSource(database = "database", tableName = "table_name", redshiftTmpDir = "", transformationContext = "datasource0", additionalOptions = JsonOptions(s"""{"startingPosition": "TRIM_HORIZON", "inferSchema": "false", "avroSchema":"$SCHEMA_STRING"}""")).getDataFrame()

Menerapkan pola grok ke sumber streaming

Anda dapat membuat sebuah tugas ETL streaming untuk sumber data log dan menggunakan pola Grok untuk mengkonversi log menjadi data terstruktur. Tugas ETL tersebut kemudian memproses data sebagai sebuah sumber data terstruktur. Anda menentukan pola Grok untuk diterapkan saat Anda membuat tabel Katalog Data untuk sumber streaming.

Untuk informasi tentang pola Grok dan nilai-nilai string pola kustom, lihat Menulis pengklasifikasi kustom grok.

Untuk menambahkan pola grok ke tabel Katalog Data (konsol)
  • Gunakan penuntun membuat tabel, dan buatlah tabel dengan parameter yang ditentukan dalam Membuat tabel Katalog Data untuk sumber streaming. Tentukan format data sebagai Grok, isi Pola grok, dan secara opsional, Anda bisa memilih untuk menambahkan pola penyesuaian pada Pola kustom (opsional).

    *

    Tekan Enter setelah setiap pola kustom.

Untuk menambahkan pola grok ke tabel Katalog Data (AWS GlueAPI atau AWS CLI)
  • Tambahkan parameter GrokPattern dan, secara opsional, parameter CustomPatterns ke operasi API CreateTable atau fungsi perintah CLI create_table.

    "Parameters": { ... "grokPattern": "string", "grokCustomPatterns": "string", ... },

    Ekspresikan grokCustomPatterns sebagai string dan gunakan "\n" sebagai pemisah antara pola.

    Berikut ini adalah contoh cara menentukan parameter ini.

    "parameters": { ... "grokPattern": "%{USERNAME:username} %{DIGIT:digit:int}", "grokCustomPatterns": "digit \d", ... }

Mendefinisikan properti pekerjaan untuk pekerjaan ETL streaming

Bila Anda menentukan tugas ETL streaming di konsol AWS Glue, berikan properti spesifik-pengaliran berikut ini. Untuk deskripsi tentang properti tugas tambahan, lihat Mendefinisikan properti pekerjaan untuk pekerjaan Spark.

Peran IAM

Tentukan peran AWS Identity and Access Management (IAM) yang digunakan untuk otorisasi sumber daya yang digunakan untuk menjalankan pekerjaan, mengakses sumber streaming, dan mengakses penyimpanan data target.

Untuk akses ke Amazon Kinesis Data Streams, AmazonKinesisFullAccess AWS lampirkan kebijakan terkelola ke peran, atau lampirkan kebijakan IAM serupa yang mengizinkan akses yang lebih halus. Untuk kebijakan sampel, lihat Mengontrol Akses ke Amazon Kinesis Data Streams Menggunakan IAM.

Untuk informasi selengkapnya tentang izin menjalankan tugas di AWS Glue, lihat Manajemen identitas dan akses untuk AWS Glue.

Tipe

Pilih Spark streaming.

Versi AWS Glue

Versi AWS Glue menentukan versi Apache Spark, dan Python atau Scala, yang tersedia untuk tugas. Pilih pilihan yang menentukan versi Python atau Scala yang tersedia untuk pekerjaan itu. AWS Glue Versi 2.0 dengan support Python 3 adalah default untuk streaming tugas ETL.

Tugas habis waktu

Opsional, masukkan durasi dalam menit. Nilai default-nya adalah kosong, yang berarti tugas mungkin berjalan tanpa batas waktu.

Sumber data

Tentukan tabel yang Anda buat di Membuat tabel Katalog Data untuk sumber streaming.

Target data

Lakukan salah satu hal berikut:

  • Pilih Buat tabel di target data Anda dan tentukan properti target data berikut.

    Penyimpanan data

    Pilih Amazon S3 atau JDBC.

    format

    Pilih format apa saja. Semua didukung untuk streaming.

  • Pilih Gunakan tabel dalam katalog data dan perbarui target data, dan pilih sebuah tabel untuk menyimpan data JDBC.

Definisi skema output

Lakukan salah satu hal berikut:

  • Pilih Secara otomatis mendeteksi skema dari setiap catatan untuk mengaktifkan deteksi skema. AWS Glue menentukan skema dari data streaming.

  • Pilih Tentukan skema output untuk semua catatan untuk menggunakan transformasi Terapkan Pemetaan untuk menentukan skema output.

Skrip

Opsional, berikan skrip Anda sendiri atau modifikasi skrip yang dihasilkan untuk melakukan operasi yang didukung oleh mesin Apache Spark Structured Streaming. Untuk informasi tentang operasi yang tersedia, lihat Operasi pada streaming DataFrames /Datasets.

Streaming catatan dan batasan ETL

Ingatlah catatan dan pembatasan berikut:

  • Dekompresi otomatis untuk AWS Glue streaming pekerjaan ETL hanya tersedia untuk jenis kompresi yang didukung. Perhatikan juga hal berikut:

    • Framed Snappy mengacu pada format pembingkaian resmi untuk Snappy.

    • Deflate didukung di Glue versi 3.0, bukan Glue versi 2.0.

  • Bila menggunakan deteksi skema, Anda tidak dapat melakukan penggabungan data streaming.

  • AWS Gluestreaming pekerjaan ETL tidak mendukung tipe data Union untuk AWS Glue Schema Registry dengan format Avro.

  • Skrip ETL Anda dapat menggunakan AWS Glue transformasi bawaan dan transformasi asli ke Apache Spark Structured Streaming. Untuk informasi selengkapnya, lihat Operasi pada streaming DataFrames /Datasets di situs web Apache Spark atau. AWS Glue PySpark mengubah referensi

  • Tugas ETL streaming AWS Glue menggunakan pos pemeriksaan untuk melacak data yang telah dibaca. Oleh karena itu, tugas yang dihentikan dan dimulai-ulang memilih tempat ia pergi di pengaliran. Jika Anda ingin memproses ulang data, maka Anda dapat menghapus folder pos pemeriksaan yang direferensikan dalam skrip.

  • Bookmark Tugas tidak didukung.

  • Untuk menggunakan fitur fan-out yang disempurnakan dari Kinesis Data Streams dalam pekerjaan Anda, konsultasikan. Menggunakan fan-out yang disempurnakan dalam pekerjaan streaming Kinesis

  • Jika Anda menggunakan tabel Katalog Data yang dibuat dari AWS Glue Schema Registry, ketika versi skema baru tersedia, untuk mencerminkan skema baru, Anda perlu melakukan hal berikut:

    1. Hentikan pekerjaan yang terkait dengan tabel.

    2. Perbarui skema untuk tabel Katalog Data.

    3. Mulai ulang pekerjaan yang terkait dengan tabel.