Sederhanakan dan percepat aplikasi Apache Spark pada data Amazon Redshift dengan integrasi Amazon Redshift untuk Apache Spark

Sederhanakan dan percepat aplikasi Apache Spark pada data Amazon Redshift dengan integrasi Amazon Redshift untuk Apache Spark

Node Sumber: 2597866

Pelanggan menggunakan Pergeseran Merah Amazon untuk menjalankan analitik penting bisnis mereka pada petabyte data terstruktur dan semi-terstruktur. Apache Spark adalah kerangka kerja populer yang dapat Anda gunakan untuk membuat aplikasi untuk kasus penggunaan seperti ETL (ekstrak, ubah, dan muat), analitik interaktif, dan pembelajaran mesin (ML). Apache Spark memungkinkan Anda membangun aplikasi dalam berbagai bahasa, seperti Java, Scala, dan Python, dengan mengakses data di gudang data Amazon Redshift Anda.

Integrasi Amazon Redshift untuk Apache Spark membantu pengembang dengan mulus membangun dan menjalankan aplikasi Apache Spark pada data Amazon Redshift. Pengembang dapat menggunakan analitik AWS dan layanan ML seperti Amazon ESDM, Lem AWS, dan Amazon SageMaker untuk dengan mudah membangun aplikasi Apache Spark yang membaca dari dan menulis ke gudang data Amazon Redshift mereka. Anda dapat melakukannya tanpa mengorbankan performa aplikasi atau konsistensi transaksional data Anda.

Dalam postingan ini, kami membahas mengapa integrasi Amazon Redshift untuk Apache Spark sangat penting dan efisien untuk analitik dan ML. Selain itu, kami membahas kasus penggunaan yang menggunakan integrasi Amazon Redshift dengan Apache Spark untuk mendorong dampak bisnis. Terakhir, kami memandu Anda melalui contoh langkah demi langkah tentang cara menggunakan konektor AWS resmi ini di aplikasi Apache Spark.

Integrasi Amazon Redshift untuk Apache Spark

Integrasi Amazon Redshift untuk Apache Spark meminimalkan proses penyiapan konektor spark-redshift yang rumit dan seringkali manual (versi komunitas) dan mempersingkat waktu yang diperlukan untuk menyiapkan tugas analitik dan ML. Anda hanya perlu menentukan koneksi ke gudang data Anda, dan Anda dapat mulai bekerja dengan data Amazon Redshift dari aplikasi berbasis Apache Spark dalam hitungan menit.

Anda dapat menggunakan beberapa kemampuan push-down untuk operasi seperti fungsi sortir, agregat, batasi, gabung, dan skalar sehingga hanya data relevan yang dipindahkan dari gudang data Amazon Redshift Anda ke aplikasi Apache Spark yang digunakan. Ini memungkinkan Anda untuk meningkatkan kinerja aplikasi Anda. Admin Amazon Redshift dapat dengan mudah mengidentifikasi SQL yang dihasilkan dari aplikasi berbasis Spark. Dalam posting ini, kami menunjukkan bagaimana Anda bisa mengetahui SQL yang dihasilkan oleh pekerjaan Apache Spark.

Selain itu, integrasi Amazon Redshift untuk Apache Spark menggunakan format file Parquet saat menyusun data dalam direktori sementara. Amazon Redshift menggunakan pernyataan UNLOAD SQL untuk menyimpan data sementara ini Layanan Penyimpanan Sederhana Amazon (Amazon S3). Aplikasi Apache Spark mengambil hasil dari direktori sementara (disimpan dalam format file Parquet), yang meningkatkan kinerja.

Anda juga dapat membantu membuat aplikasi Anda lebih aman dengan memanfaatkan Identitas AWS dan Manajemen Akses (IAM) kredensial untuk terhubung ke Amazon Redshift.

Integrasi Amazon Redshift untuk Apache Spark dibangun di atas konektor spark-redshift (versi komunitas) dan menyempurnakannya untuk kinerja dan keamanan, membantu Anda mendapatkan kinerja aplikasi hingga 10 kali lebih cepat.

Kasus penggunaan untuk integrasi Amazon Redshift dengan Apache Spark

Untuk kasus penggunaan kami, pimpinan perusahaan berbasis produk ingin mengetahui penjualan setiap produk di berbagai pasar. Karena penjualan perusahaan berfluktuasi secara dinamis, menjadi tantangan bagi kepemimpinan untuk melacak penjualan di berbagai pasar. Namun, penjualan keseluruhan menurun, dan pimpinan perusahaan ingin mengetahui pasar mana yang tidak berkinerja baik sehingga mereka dapat menargetkan pasar ini untuk kampanye promosi.

Untuk penjualan di berbagai pasar, data penjualan produk seperti pesanan, transaksi, dan data pengiriman tersedia di Amazon S3 di data lake. Tim teknik data dapat menggunakan Apache Spark dengan Amazon EMR atau AWS Glue untuk menganalisis data ini di Amazon S3.

Data inventaris tersedia di Amazon Redshift. Demikian pula, tim teknik data dapat menganalisis data ini dengan Apache Spark menggunakan Amazon EMR atau pekerjaan AWS Glue dengan menggunakan integrasi Amazon Redshift untuk Apache Spark untuk melakukan agregasi dan transformasi. Dataset gabungan dan transformasi dapat disimpan kembali ke Amazon Redshift menggunakan integrasi Amazon Redshift untuk Apache Spark.

Menggunakan kerangka kerja terdistribusi seperti Apache Spark dengan integrasi Amazon Redshift untuk Apache Spark dapat memberikan visibilitas di seluruh data lake dan gudang data untuk menghasilkan wawasan penjualan. Wawasan ini dapat disediakan untuk pemangku kepentingan bisnis dan pengguna lini bisnis di Amazon Redshift untuk membuat keputusan yang tepat untuk menjalankan promosi yang ditargetkan untuk segmen pasar berpenghasilan rendah.

Selain itu, kami dapat menggunakan integrasi Amazon Redshift dengan Apache Spark dalam kasus penggunaan berikut:

  • Pelanggan Amazon EMR atau AWS Glue yang menjalankan pekerjaan Apache Spark ingin mengubah data dan menulisnya ke Amazon Redshift sebagai bagian dari pipa ETL mereka
  • Pelanggan ML menggunakan Apache Spark dengan SageMaker untuk rekayasa fitur untuk mengakses dan mengubah data di Amazon Redshift
  • Pelanggan Amazon EMR, AWS Glue, atau SageMaker menggunakan Apache Spark untuk analisis data interaktif dengan data di Amazon Redshift dari notebook

Contoh untuk integrasi Amazon Redshift untuk Apache Spark di aplikasi Apache Spark

Dalam postingan ini, kami menunjukkan langkah-langkah untuk menghubungkan Amazon Redshift dari Amazon EMR Cloud komputasi elastis Amazon (Amazon EC2), Amazon EMR Tanpa Server, dan AWS Glue menggunakan skrip umum. Dalam kode contoh berikut, kami membuat laporan yang menunjukkan penjualan triwulanan untuk tahun 2008. Untuk melakukannya, kami menggabungkan dua tabel Amazon Redshift menggunakan Apache Spark DataFrame, menjalankan pushdown predikat, menggabungkan dan mengurutkan data, dan menulis perubahan data kembali ke Amazon Redshift. Skrip menggunakan PySpark

Skrip menggunakan Autentikasi berbasis IAM untuk Amazon Redshift. Peran IAM yang digunakan oleh Amazon EMR dan AWS Glue harus memiliki izin yang sesuai untuk mengautentikasi Amazon Redshift, dan akses ke bucket S3 untuk penyimpanan data sementara.

Kebijakan contoh berikut memungkinkan peran IAM untuk memanggil GetClusterCredentials operasi:

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "redshift:GetClusterCredentials", "Resource": "arn:aws:redshift:<aws_region_name>:xxxxxxxxxxxx:dbuser:*/temp_*" }
}

Kebijakan contoh berikut mengizinkan akses ke bucket S3 untuk penyimpanan data sementara:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:ListBucket" ], "Resource": "arn:aws:s3:::<s3_bucket_name>" } ]
}

Script lengkapnya adalah sebagai berikut:

from pyspark.sql import SparkSession
from pyspark.sql.functions import col # Initiate Apache Spark session
spark = SparkSession .builder .appName("SparkRedshiftConnector") .enableHiveSupport() .getOrCreate() # Set connection options for Amazon Redshift
jdbc_iam_url = "jdbc:redshift:iam://redshift-spark-connector-1.xxxxxxxxxxx.<aws_region_name>.redshift.amazonaws.com:5439/sample_data_dev"
temp_dir = 's3://<s3_bucket_name>/redshift-temp-dir/'
aws_role = 'arn:aws:iam::xxxxxxxxxxxx:role/redshift-s3' # Set query group for the query. More details on Amazon Redshift WLM https://docs.aws.amazon.com/redshift/latest/dg/cm-c-executing-queries.html
queryGroup = "emr-redshift"
jdbc_iam_url_withQueryGroup = jdbc_iam_url+'?queryGroup='+queryGroup # Set User name for the query
userName = 'awsuser'
jdbc_iam_url_withUserName = jdbc_iam_url_withQueryGroup+';user='+userName # Define the Amazon Redshift context
redshiftOptions = { "url": jdbc_iam_url_withUserName, "tempdir": temp_dir, "aws_iam_role" : aws_role
} # Create the sales DataFrame from Amazon Redshift table using io.github.spark_redshift_community.spark.redshift class
sales_df = ( spark.read .format("io.github.spark_redshift_community.spark.redshift") .options(**redshiftOptions) .option("dbtable", "tickit.sales") .load()
) # Create the date Data Frame from Amazon Redshift table
date_df = ( spark.read .format("io.github.spark_redshift_community.spark.redshift") .options(**redshiftOptions) .option("dbtable", "tickit.date") .load()
) # Assign a Data Frame to the above output which will be written back to Amazon Redshift
output_df= sales_df.join(date_df, sales_df.dateid == date_df.dateid, 'inner').where( col("year") == 2008).groupBy("qtr").sum("qtysold").select( col("qtr"), col("sum(qtysold)")).sort(["qtr"], ascending=[1]).withColumnRenamed("sum(qtysold)","total_quantity_sold") # Display the output
output_df.show() ## Lets drop the queryGroup for easy validation of push down queries
# Set User name for the query
userName = 'awsuser'
jdbc_iam_url_withUserName = jdbc_iam_url+'?user='+userName # Define the Amazon Redshift context
redshiftWriteOptions = { "url": jdbc_iam_url_withUserName, "tempdir": temp_dir, "aws_iam_role" : aws_role
} # Write the Data Frame back to Amazon Redshift
output_df.write .format("io.github.spark_redshift_community.spark.redshift") .mode("overwrite") .options(**redshiftWriteOptions) .option("dbtable", "tickit.test") .save()

Jika Anda berencana untuk menggunakan skrip sebelumnya di lingkungan Anda, pastikan Anda mengganti nilai variabel berikut dengan nilai yang sesuai untuk lingkungan Anda: jdbc_iam_url, temp_dir, dan aws_role.

Di bagian selanjutnya, kita membahas langkah-langkah untuk menjalankan skrip ini guna menggabungkan sampel kumpulan data yang tersedia di Amazon Redshift.

Prasyarat

Sebelum kita mulai, pastikan prasyarat berikut terpenuhi:

Terapkan sumber daya menggunakan AWS CloudFormation

Selesaikan langkah-langkah berikut untuk menerapkan tumpukan CloudFormation:

  1. Masuk ke Konsol Manajemen AWS, lalu luncurkan tumpukan CloudFormation:
    BDB-2063-peluncuran-cloudformation-stack

Anda juga bisa unduh templat CloudFormation untuk membuat sumber daya yang disebutkan dalam posting ini melalui infrastruktur sebagai kode (IaC). Gunakan templat ini saat meluncurkan tumpukan CloudFormation baru.

  1. Gulir ke bawah ke bagian bawah halaman untuk memilih Saya mengakui bahwa AWS CloudFormation dapat menciptakan sumber daya IAM bawah Kemampuan, Lalu pilih Buat tumpukan.

Proses pembuatan tumpukan membutuhkan waktu 15–20 menit untuk diselesaikan. Templat CloudFormation membuat sumber daya berikut:

    • VPC Amazon dengan subnet, tabel rute, dan gateway NAT yang diperlukan
    • Bucket S3 dengan nama redshift-spark-databucket-xxxxxxx (perhatikan bahwa xxxxxxx adalah string acak untuk membuat nama bucket unik)
    • Klaster Amazon Redshift dengan data sampel yang dimuat di dalam database dev dan pengguna utama redshiftmasteruser. Untuk tujuan posting blog ini, redshiftmasteruser dengan izin administratif digunakan. Namun, disarankan untuk menggunakan pengguna dengan kontrol akses berbutir halus di lingkungan produksi.
    • Peran IAM yang akan digunakan untuk Amazon Redshift dengan kemampuan untuk meminta kredensial sementara dari database dev klaster Amazon Redshift
    • Studio Amazon EMR dengan peran IAM yang diperlukan
    • Rilis Amazon EMR versi 6.9.0 pada klaster EC2 dengan peran IAM yang diperlukan
    • Rilis aplikasi Amazon EMR Tanpa Server versi 6.9.0
    • Koneksi AWS Glue dan pekerjaan AWS Glue versi 4.0
    • A Notebook Jupyter untuk dijalankan menggunakan Amazon EMR Studio menggunakan Amazon EMR di klaster EC2
    • Skrip PySpark untuk dijalankan menggunakan Amazon EMR Studio dan Amazon EMR Tanpa Server
  1. Setelah pembuatan tumpukan selesai, pilih nama tumpukan redshift-spark dan arahkan ke menu Output

Kami menggunakan nilai output ini nanti di posting ini.

Di bagian selanjutnya, kami menunjukkan langkah-langkah integrasi Amazon Redshift untuk Apache Spark dari Amazon EMR di Amazon EC2, Amazon EMR Tanpa Server, dan AWS Glue.

Gunakan integrasi Amazon Redshift dengan Apache Spark di Amazon EMR di EC2

Mulai dari rilis Amazon EMR versi 6.9.0 dan yang lebih baru, konektor yang menggunakan integrasi Amazon Redshift untuk Apache Spark dan driver Amazon Redshift JDBC tersedia secara lokal di Amazon EMR. File-file ini terletak di bawah /usr/share/aws/redshift/ direktori. Namun, di versi Amazon EMR sebelumnya, file masyarakat versi spark-redshift konektor tersedia.

Contoh berikut menunjukkan cara menghubungkan Amazon Redshift menggunakan kernel PySpark melalui Studio Amazon EMR buku catatan. Tumpukan CloudFormation membuat Amazon EMR Studio, Amazon EMR di klaster EC2, dan notebook Jupyter tersedia untuk dijalankan. Untuk melihat contoh ini, selesaikan langkah-langkah berikut:

  1. Unduh notebook Jupyter yang tersedia di bucket S3 untuk Anda:
    • Di keluaran tumpukan CloudFormation, cari nilai untuk EMRStudioNotebook, yang seharusnya menunjuk ke redshift-spark-emr.ipynb notebook tersedia di bucket S3.
    • Pilih tautan atau buka tautan di tab baru dengan menyalin URL untuk buku catatan.
    • Setelah Anda membuka tautan, unduh buku catatan dengan memilih Unduh, yang akan menyimpan file secara lokal di komputer Anda.
  1. Akses Amazon EMR Studio dengan memilih atau menyalin tautan yang disediakan di keluaran tumpukan CloudFormation untuk kunci tersebut EMRStudioURL.
  2. Di panel navigasi, pilih ruang kerja.
  3. Pilih Buat Ruang Kerja.
  4. Berikan nama untuk Workspace, misalnya redshift-spark.
  5. Pilih Konfigurasi lanjutan bagian dan pilih Lampirkan Ruang Kerja ke kluster EMR.
  6. Bawah Lampirkan ke cluster ESDM, pilih klaster ESDM dengan namanya emrCluster-Redshift-Spark.
  7. Pilih Buat Ruang Kerja.
  8. Setelah Ruang Kerja Amazon EMR Studio dibuat dan dalam status Terlampir, Anda dapat mengakses Ruang Kerja dengan memilih nama Ruang Kerja.

Ini akan membuka Workspace di tab baru. Perhatikan bahwa jika Anda memiliki pemblokir pop-up, Anda mungkin harus mengizinkan Workspace untuk membuka atau menonaktifkan pemblokir pop-up.

Di Ruang Kerja Amazon EMR Studio, kami sekarang mengunggah notebook Jupyter yang kami unduh sebelumnya.

  1. Pilih Unggah untuk menjelajahi sistem file lokal Anda dan mengunggah notebook Jupyter (redshift-spark-emr.ipynb).
  2. Pilih (klik dua kali) file redshift-spark-emr.ipynb buku catatan di dalam Ruang Kerja untuk membuka buku catatan.

Buku catatan memberikan detail berbagai tugas yang dilakukannya. Perhatikan bahwa di bagian Tentukan variabel untuk terhubung ke klaster Amazon Redshift, Anda tidak perlu memperbarui nilai untuk jdbc_iam_url, temp_dir, dan aws_role karena ini diperbarui untuk Anda oleh AWS CloudFormation. AWS CloudFormation juga telah melakukan langkah-langkah yang disebutkan dalam Prasyarat bagian dari notebook.

Anda sekarang dapat mulai menjalankan notebook.

  1. Jalankan sel individual dengan memilihnya lalu memilih Bermain.

Anda juga dapat menggunakan kombinasi tombol dari Shift + Enter or Shift+Kembali. Atau, Anda dapat menjalankan semua sel dengan memilih Jalankan Semua Sel pada Run menu.

  1. Temukan operasi push-down predikat yang dilakukan di klaster Amazon Redshift oleh integrasi Amazon Redshift untuk Apache Spark.

Kami juga dapat melihat data sementara yang disimpan di Amazon S3 dalam format Parquet yang dioptimalkan. Outputnya dapat dilihat dari menjalankan sel di bagian tersebut Dapatkan kueri terakhir dieksekusi di Amazon Redshift.

  1. Untuk memvalidasi tabel yang dibuat oleh tugas dari Amazon EMR di Amazon EC2, buka konsol Amazon Redshift dan pilih klaster redshift-spark-redshift-cluster pada Dasbor cluster yang disediakan .
  2. Dalam detail cluster, di Data kueri menu, pilih Kueri di editor kueri v2.
  3. Pilih klaster di panel navigasi dan sambungkan ke klaster Amazon Redshift saat meminta autentikasi.
  4. Pilih Kredensial sementara.
  5. Untuk Basis Data, Masuk dev.
  6. Untuk user name, Masuk redshiftmasteruser.
  7. Pilih Save.
  8. Di panel navigasi, perluas kluster redshift-spark-redshift-cluster, perluas basis data dev, perluas tickit, dan memperluas Meja untuk membuat daftar semua tabel di dalam skema tickit.

Anda harus menemukan meja test_emr.

  1. Pilih (klik kanan) tabel test_emr, Lalu pilih Pilih meja untuk menanyakan tabel.
  2. Pilih Run untuk menjalankan pernyataan SQL.

Gunakan integrasi Amazon Redshift dengan Apache Spark di Amazon EMR Tanpa Server

Rilis Amazon EMR versi 6.9.0 dan yang lebih baru menyediakan integrasi Amazon Redshift untuk Apache Spark JAR (dikelola oleh Amazon Redshift) dan Amazon Redshift JDBC JAR secara lokal di Amazon EMR Tanpa Server juga. File-file ini terletak di bawah /usr/share/aws/redshift/ direktori. Dalam contoh berikut, kami menggunakan skrip Python yang tersedia di bucket S3 oleh tumpukan CloudFormation yang kami buat sebelumnya.

  1. Dalam keluaran tumpukan CloudFormation, catat nilainya untuk EMRServerlessExecutionScript, yang merupakan lokasi skrip Python di bucket S3.
  2. Perhatikan juga nilai untuk EMRServerlessJobExecutionRole, yang merupakan peran IAM untuk digunakan dengan menjalankan pekerjaan Tanpa Server Amazon EMR.
  3. Akses Amazon EMR Studio dengan memilih atau menyalin tautan yang disediakan di keluaran tumpukan CloudFormation untuk kunci tersebut EMRStudioURL.
  4. Pilih Aplikasi bawah Tanpa Server di panel navigasi.

Anda akan menemukan aplikasi EMR yang dibuat oleh tumpukan CloudFormation dengan namanya emr-spark-redshift.

  1. Pilih nama aplikasi untuk mengirimkan pekerjaan.
  2. Pilih Kirim pekerjaan.
  3. Bawah Rincian pekerjaan, Untuk Nama, masukkan nama yang dapat diidentifikasi untuk pekerjaan tersebut.
  4. Untuk Peran waktu proses, pilih peran IAM yang Anda catat dari keluaran tumpukan CloudFormation sebelumnya.
  5. Untuk Lokasi skrip, berikan jalur ke skrip Python yang Anda catat sebelumnya dari keluaran tumpukan CloudFormation.
  6. Perluas bagian tersebut Properti percikan Dan pilih Mengedit dalam teks
  7. Masukkan nilai berikut di kotak teks, yang menyediakan jalur ke redshift-connector, driver JDBC Amazon Redshift, spark-avro JAR, dan minimal-json file JAR:
    --jars /usr/share/aws/redshift/jdbc/RedshiftJDBC.jar,/usr/share/aws/redshift/spark-redshift/lib/spark-redshift.jar,/usr/share/aws/redshift/spark-redshift/lib/spark-avro.jar,/usr/share/aws/redshift/spark-redshift/lib/minimal-json.jar

  8. Pilih Kirim pekerjaan.
  9. Tunggu hingga pekerjaan selesai dan status proses ditampilkan sebagai Keberhasilan.
  10. Arahkan ke editor kueri Amazon Redshift untuk melihat apakah tabel berhasil dibuat.
  11. Periksa kueri pushdown yang dijalankan untuk grup kueri Amazon Redshift emr-serverless-redshift. Anda dapat menjalankan pernyataan SQL berikut terhadap database dev:
    SELECT query_text FROM SYS_QUERY_HISTORY WHERE query_label = 'emr-serverless-redshift' ORDER BY start_time DESC LIMIT 1

Anda dapat melihat bahwa kueri pushdown dan mengembalikan hasil disimpan dalam format file Parquet di Amazon S3.

Gunakan integrasi Amazon Redshift dengan Apache Spark di AWS Glue

Dimulai dengan AWS Glue versi 4.0 dan yang lebih baru, pekerjaan Apache Spark yang terhubung ke Amazon Redshift dapat menggunakan integrasi Amazon Redshift untuk driver Apache Spark dan Amazon Redshift JDBC. Pekerjaan AWS Glue yang sudah ada yang menggunakan Amazon Redshift sebagai sumber atau target dapat ditingkatkan ke AWS Glue 4.0 untuk memanfaatkan konektor baru ini. Template CloudFormation yang disertakan dengan postingan ini membuat sumber daya AWS Glue berikut:

  • Koneksi AWS Glue untuk Amazon Redshift – Koneksi untuk membangun koneksi dari AWS Glue ke Amazon Redshift menggunakan integrasi Amazon Redshift untuk Apache Spark
  • Peran IAM melekat pada tugas AWS Glue – Peran IAM untuk mengelola izin untuk menjalankan pekerjaan AWS Glue
  • Pekerjaan AWS Glue – Skrip untuk pekerjaan AWS Glue yang melakukan transformasi dan agregasi menggunakan integrasi Amazon Redshift untuk Apache Spark

Contoh berikut menggunakan koneksi AWS Glue yang dilampirkan ke pekerjaan AWS Glue dengan PySpark dan mencakup langkah-langkah berikut:

  1. Di konsol AWS Glue, pilih Koneksi di panel navigasi.
  2. Bawah Koneksi, pilih koneksi AWS Glue untuk Amazon Redshift yang dibuat oleh template CloudFormation.
  3. Verifikasi detail koneksi.

Anda sekarang dapat menggunakan kembali koneksi ini dalam satu pekerjaan atau di beberapa pekerjaan.

  1. pada konektor halaman, pilih pekerjaan AWS Glue yang dibuat oleh tumpukan CloudFormation di bawah pekerjaan Anda, atau akses pekerjaan AWS Glue dengan menggunakan URL yang disediakan untuk kunci tersebut GlueJob dalam keluaran tumpukan CloudFormation.
  2. Akses dan verifikasi skrip untuk pekerjaan AWS Glue.
  3. pada Rincian pekerjaan tab, pastikan itu Versi lem diatur ke Lem 4.0.

Ini memastikan bahwa pekerjaan menggunakan yang terbaru redshift-spark Konektor.

  1. Lihat lebih lanjut Sifat lanjutan dan di Koneksi bagian, verifikasi bahwa koneksi yang dibuat oleh tumpukan CloudFormation terpasang.
  2. Verifikasi parameter pekerjaan yang ditambahkan untuk pekerjaan AWS Glue. Nilai-nilai ini juga tersedia dalam keluaran untuk tumpukan CloudFormation.
  3. Pilih Save lalu Run.

Anda dapat melihat status pekerjaan yang dijalankan di Run Tab.

  1. Setelah pekerjaan selesai dengan sukses, Anda dapat memverifikasi output lem uji tabel yang dibuat oleh pekerjaan AWS Glue.
  2. Kami memeriksa kueri pushdown yang dijalankan untuk grup kueri Amazon Redshift glue-redshift. Anda dapat menjalankan pernyataan SQL berikut terhadap database dev:
    SELECT query_text FROM SYS_QUERY_HISTORY WHERE query_label = 'glue-redshift' ORDER BY start_time DESC LIMIT 1

Praktik terbaik

Perhatikan praktik terbaik berikut:

  • Pertimbangkan untuk menggunakan integrasi Amazon Redshift untuk Apache Spark dari Amazon EMR daripada menggunakan redshift-spark konektor (versi komunitas) untuk pekerjaan Apache Spark baru Anda.
  • Jika Anda memiliki pekerjaan Apache Spark menggunakan redshift-spark konektor (versi komunitas), pertimbangkan untuk memutakhirkannya agar menggunakan integrasi Amazon Redshift untuk Apache Spark
  • Integrasi Amazon Redshift untuk Apache Spark secara otomatis menerapkan penurunan predikat dan kueri untuk mengoptimalkan kinerja. Kami merekomendasikan penggunaan fungsi yang didukung (autopushdown) dalam kueri Anda. Integrasi Amazon Redshift untuk Apache Spark akan mengubah fungsi menjadi kueri SQL dan menjalankan kueri di Amazon Redshift. Pengoptimalan ini menghasilkan data yang diperlukan diambil, sehingga Apache Spark dapat memproses lebih sedikit data dan memiliki kinerja yang lebih baik.
    • Pertimbangkan untuk menggunakan fungsi pushdown agregat seperti avg, count, max, min, dan sum untuk mengambil data yang difilter untuk pemrosesan data.
    • Pertimbangkan untuk menggunakan operator pushdown Boolean seperti in, isnull, isnotnull, contains, endswith, dan startswith untuk mengambil data yang difilter untuk pemrosesan data.
    • Pertimbangkan untuk menggunakan operator pushdown logis seperti and, or, dan not (Atau !) untuk mengambil data yang difilter untuk pemrosesan data.
  • Direkomendasikan untuk meneruskan peran IAM menggunakan parameter aws_iam_role untuk autentikasi Amazon Redshift dari aplikasi Apache Spark Anda di Amazon EMR atau AWS Glue. Peran IAM harus memiliki izin yang diperlukan untuk mengambil kredensial IAM sementara untuk mengautentikasi ke Amazon Redshift seperti yang ditunjukkan di bagian "Contoh integrasi Amazon Redshift untuk Apache Spark di aplikasi Apache Spark" blog ini.
  • Dengan fitur ini, Anda tidak perlu menyimpan nama pengguna dan kata sandi Amazon Redshift di pengelola rahasia dan database Amazon Redshift.
  • Amazon Redshift menggunakan pernyataan UNLOAD SQL untuk menyimpan data sementara ini di Amazon S3. Aplikasi Apache Spark mengambil hasil dari direktori sementara (disimpan dalam format file Parquet). Direktori sementara di Amazon S3 ini tidak dibersihkan secara otomatis, dan karenanya dapat menambah biaya tambahan. Kami merekomendasikan menggunakan Kebijakan siklus hidup Amazon S3 untuk menentukan aturan retensi untuk bucket S3.
  • Disarankan untuk dihidupkan Logging audit Amazon Redshift untuk mencatat informasi tentang koneksi dan aktivitas pengguna di database Anda.
  • Disarankan untuk dihidupkan Enkripsi diam Amazon Redshift untuk mengenkripsi data Anda saat Amazon Redshift menulisnya di pusat datanya dan mendekripsinya untuk Anda saat Anda mengaksesnya.
  • Direkomendasikan untuk meningkatkan ke AWS Glue v4.0 dan yang lebih baru untuk menggunakan integrasi Amazon Redshift untuk Apache Spark, yang langsung tersedia. Memutakhirkan ke versi AWS Glue ini akan menggunakan fitur ini secara otomatis.
  • Direkomendasikan untuk meningkatkan ke Amazon EMR v6.9.0 dan yang lebih baru untuk menggunakan integrasi Amazon Redshift untuk Apache Spark. Anda tidak perlu mengelola driver atau file JAR apa pun secara eksplisit.
  • Pertimbangkan untuk menggunakan notebook Amazon EMR Studio untuk berinteraksi dengan data Amazon Redshift di aplikasi Apache Spark Anda.
  • Pertimbangkan untuk menggunakan AWS Glue Studio untuk membuat pekerjaan Apache Spark menggunakan antarmuka visual. Anda juga dapat beralih untuk menulis kode Apache Spark di Scala atau PySpark dalam AWS Glue Studio.

Membersihkan

Selesaikan langkah-langkah berikut untuk membersihkan sumber daya yang dibuat sebagai bagian dari template CloudFormation untuk memastikan bahwa Anda tidak dikenai biaya untuk sumber daya jika Anda tidak lagi menggunakannya:

  1. Hentikan aplikasi Tanpa Server Amazon EMR:
    • Akses Amazon EMR Studio dengan memilih atau menyalin tautan yang disediakan di keluaran tumpukan CloudFormation untuk kunci tersebut EMRStudioURL.
    • Pilih Aplikasi bawah Tanpa Server di panel navigasi.

Anda akan menemukan aplikasi EMR yang dibuat oleh tumpukan CloudFormation dengan namanya emr-spark-redshift.

    • Jika status aplikasi menunjukkan Berhenti, Anda dapat melanjutkan ke langkah berikutnya. Namun jika status aplikasinya Started, pilih nama aplikasinya, lalu pilih Hentikan aplikasi dan Hentikan aplikasi lagi untuk konfirmasi.
  1. Hapus Ruang Kerja Amazon EMR Studio:
    • Akses Amazon EMR Studio dengan memilih atau menyalin tautan yang disediakan di keluaran tumpukan CloudFormation untuk kunci tersebut EMRStudioURL.
    • Pilih ruang kerja di panel navigasi.
    • Pilih Ruang Kerja yang Anda buat dan pilih Delete, Lalu pilih Delete lagi untuk konfirmasi.
  2. Hapus tumpukan CloudFormation:
    • Di konsol AWS CloudFormation, arahkan ke tumpukan yang Anda buat sebelumnya.
    • Pilih nama tumpukan lalu pilih Delete untuk menghapus tumpukan dan menghapus sumber daya yang dibuat sebagai bagian dari posting ini.
    • Di layar konfirmasi, pilih Hapus tumpukan.

Kesimpulan

Dalam postingan ini, kami menjelaskan bagaimana Anda dapat menggunakan integrasi Amazon Redshift untuk Apache Spark untuk membangun dan menerapkan aplikasi dengan Amazon EMR di Amazon EC2, Amazon EMR Tanpa Server, dan AWS Glue untuk menerapkan predikat dan kueri pushdown secara otomatis guna mengoptimalkan kinerja kueri untuk data di Amazon Redshift. Sangat disarankan untuk menggunakan integrasi Amazon Redshift untuk Apache Spark untuk koneksi yang lancar dan aman ke Amazon Redshift dari Amazon EMR atau AWS Glue Anda.

Inilah yang dikatakan beberapa pelanggan kami tentang integrasi Amazon Redshift untuk Apache Spark:

“Kami memberdayakan teknisi kami untuk membangun saluran data dan aplikasi mereka dengan Apache Spark menggunakan Python dan Scala. Kami menginginkan solusi yang disesuaikan yang menyederhanakan operasi dan memberikan lebih cepat dan lebih efisien untuk klien kami, dan itulah yang kami dapatkan dengan integrasi Amazon Redshift baru untuk Apache Spark.”

—Konsultasi Huron

“GE Aerospace menggunakan analitik AWS dan Amazon Redshift untuk mengaktifkan wawasan bisnis penting yang mendorong keputusan bisnis penting. Dengan dukungan penyalinan otomatis dari Amazon S3, kami dapat membuat jaringan pipa data yang lebih sederhana untuk memindahkan data dari Amazon S3 ke Amazon Redshift. Ini mempercepat kemampuan tim produk data kami untuk mengakses data dan memberikan wawasan kepada pengguna akhir. Kami menghabiskan lebih banyak waktu untuk menambahkan nilai melalui data dan lebih sedikit waktu untuk integrasi.”

—GE Dirgantara

“Fokus kami adalah menyediakan akses layanan mandiri ke data untuk semua pengguna kami di Goldman Sachs. Melalui Legend, platform tata kelola dan manajemen data sumber terbuka kami, kami memungkinkan pengguna untuk mengembangkan aplikasi yang berpusat pada data dan memperoleh wawasan berbasis data saat kami berkolaborasi di seluruh industri layanan keuangan. Dengan integrasi Amazon Redshift untuk Apache Spark, tim platform data kami akan dapat mengakses data Amazon Redshift dengan langkah manual minimal, memungkinkan ETL kode nol yang akan meningkatkan kemampuan kami untuk memudahkan para insinyur untuk fokus menyempurnakan alur kerja mereka sebagai mereka mengumpulkan informasi yang lengkap dan tepat waktu. Kami berharap dapat melihat peningkatan kinerja aplikasi dan peningkatan keamanan karena pengguna kami sekarang dapat dengan mudah mengakses data terbaru di Amazon Redshift.”

—Goldman Sachs


Tentang Penulis

Gagan Brahmana adalah Arsitek Solusi Spesialis Senior yang berfokus pada analitik data besar dan platform AI/ML di Amazon Web Services. Gagan memiliki pengalaman lebih dari 18 tahun di bidang teknologi informasi. Dia membantu pelanggan merancang dan membangun solusi berbasis cloud yang sangat dapat diskalakan, berkinerja, dan aman di AWS. Di waktu luangnya, dia menghabiskan waktu bersama keluarganya dan menjelajahi tempat-tempat baru.

Vivek Gautama adalah Arsitek Data dengan spesialisasi data lake di AWS Professional Services. Dia bekerja dengan pelanggan perusahaan yang membangun produk data, platform analitik, dan solusi di AWS. Saat tidak membangun dan mendesain danau data, Vivek adalah penggemar makanan yang juga suka menjelajahi tujuan wisata baru dan mendaki gunung.

Naresh Gautama adalah Analisis Data dan pemimpin AI/ML di AWS dengan pengalaman 20 tahun, yang senang membantu pelanggan merancang analitik data yang sangat tersedia, berkinerja tinggi, dan hemat biaya serta solusi AI/ML untuk memberdayakan pelanggan dengan pengambilan keputusan berdasarkan data . Di waktu luangnya, dia menikmati meditasi dan memasak.

Beaux Sharifi adalah Insinyur Pengembangan Perangkat Lunak dalam tim driver Amazon Redshift di mana dia memimpin pengembangan Integrasi Amazon Redshift dengan konektor Apache Spark. Dia memiliki lebih dari 20 tahun pengalaman membangun platform berbasis data di berbagai industri. Di waktu luangnya, ia menikmati menghabiskan waktu bersama keluarga dan berselancar.

Stempel Waktu:

Lebih dari Data Besar AWS