

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

# Arsitektur
<a name="architecture"></a>

Diagram berikut menggambarkan arsitektur solusi yang dijelaskan dalam panduan ini. AWS Glue Pekerjaan membaca data dari bucket [Amazon Simple Storage Service (Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html)), yang merupakan layanan penyimpanan objek berbasis cloud yang membantu Anda menyimpan, melindungi, dan mengambil data. Anda dapat memulai AWS Glue Spark SQL pekerjaan melalui Konsol Manajemen AWS, [AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html), atau AWS Glue API. AWS Glue Spark SQLPekerjaan tersebut memproses data mentah dalam bucket Amazon S3 dan kemudian menyimpan data yang diproses dalam bucket yang berbeda.



![AWS Glue dengan Spark SQL memproses data mentah dalam ember Amazon S3](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/spark-tuning-glue-emr/images/aws-glue-processing-S3-data.png)


Misalnya tujuan, panduan ini menjelaskan [AWS GlueSpark SQLpekerjaan](https://docs.aws.amazon.com/glue/latest/dg/etl-jobs-section.html) dasar, yang ditulis dalam Python dan Spark SQL (PySpark). AWS Glue Pekerjaan ini digunakan untuk menunjukkan praktik terbaik untuk Spark SQL penyetelan. Meskipun panduan ini berfokus pada AWS Glue, praktik terbaik dalam panduan ini juga berlaku untuk pekerjaan [EMR Spark SQL Amazon](https://docs.aws.amazon.com/emr/latest/EMR-Serverless-UserGuide/jobs-spark.html).

Diagram berikut menggambarkan siklus hidup query. Spark SQL Spark SQLCatalyst Optimizer menghasilkan rencana kueri. *Query plan* adalah serangkaian langkah, seperti instruksi, yang digunakan untuk mengakses data dalam sistem database relasional SQL. Untuk mengembangkan rencana Spark SQL kueri yang dioptimalkan kinerja, langkah pertama adalah melihat `EXPLAIN` rencana, menafsirkan rencana, dan kemudian menyetel rencana. Anda dapat menggunakan antarmuka Spark SQL pengguna (UI) atau Server Spark SQL Sejarah untuk memvisualisasikan paket.



![Siklus hidup Spark SQL kueri untuk membuat kumpulan data terdistribusi tangguh (RDD)](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/spark-tuning-glue-emr/images/spark-sql-query-lifecycle.png)


SparkCatalyst Optimizer mengubah rencana kueri awal menjadi rencana kueri yang dioptimalkan sebagai berikut:

1. **Analisis dan API deklaratif** — Fase analisis adalah langkah pertama. *Rencana logis yang belum terselesaikan*, di mana objek yang direferensikan dalam kueri SQL tidak diketahui atau tidak cocok dengan tabel input, dihasilkan dengan atribut dan tipe data yang tidak terikat. Spark SQLCatalyst Optimizer kemudian menerapkan seperangkat aturan untuk membangun rencana logis. Parser SQL dapat menghasilkan SQL Abstract Syntax Tree (AST) dan memberikan ini sebagai masukan untuk rencana logis. Input mungkin juga berupa bingkai data atau objek dataset yang dibangun dengan menggunakan API. Tabel berikut menunjukkan kapan Anda harus menggunakan SQL, frame data, atau dataset.  
****    
[See the AWS documentation website for more details](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/spark-tuning-glue-emr/architecture.html)

   Untuk informasi lebih lanjut tentang jenis input, tinjau hal-hal berikut:
   + API dataset menyediakan versi yang **diketik**. Ini mengurangi kinerja karena ketergantungan yang besar pada fungsi lambda yang ditentukan pengguna. RDD atau dataset diketik secara statis. Misalnya, ketika Anda mendefinisikan RDD, Anda perlu secara eksplisit memberikan definisi skema.
   + API bingkai data menyediakan operasi relasional **yang tidak diketik**. Bingkai data diketik secara dinamis. Mirip dengan RDD, ketika Anda menentukan bingkai data, skema tetap sama. Data masih terstruktur. Namun, informasi ini hanya tersedia saat runtime. Hal ini memungkinkan compiler untuk menulis SQL-like pernyataan dan mendefinisikan kolom baru dengan cepat. Misalnya, dapat menambahkan kolom ke bingkai data yang ada tanpa perlu mendefinisikan kelas baru untuk setiap operasi.
   + Spark SQLKueri dievaluasi untuk kesalahan sintaks dan analisis selama runtime, yang menyediakan runtime lebih cepat.

1. **Katalog** — **Spark SQL**digunakan Apache Hive Metastore (HMS) untuk mengelola metadata entitas relasional persisten, seperti database, tabel, kolom, dan partisi.

1. **Optimisasi** —**** Pengoptimal menulis ulang rencana kueri dengan menggunakan heuristik dan biaya. Ini melakukan hal berikut untuk menghasilkan rencana logis yang dioptimalkan:

   1. Kolom plum

   1. Mendorong predikat ke bawah

   1. Penataan ulang bergabung

1. **Rencana fisik dan perencana** — Spark SQL Catalyst Optimizer mengubah rencana logis menjadi serangkaian rencana fisik. Ini berarti mengubah *apa* menjadi *bagaimana*.

1. **Rencana fisik yang dipilih** - Spark SQL Catalyst Optimizer memilih rencana fisik yang paling hemat biaya.

1. **Paket kueri yang dioptimalkan — Spark SQL menjalankan paket kueri** yang dioptimalkan untuk kinerja dan biaya yang dioptimalkan. Spark SQL Manajemen Memori melacak penggunaan memori dan mendistribusikan memori antara tugas dan operator. Mesin Spark SQL Tungsten secara substansif dapat meningkatkan memori dan efisiensi CPU untuk Spark SQL aplikasi. Ini juga mengimplementasikan pemrosesan model data biner, dan beroperasi langsung pada data biner. Ini melewati kebutuhan deserialisasi dan secara signifikan mengurangi overhead yang terkait dengan konversi data dan deserialisasi.