Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Memahami Athena MENJELASKAN hasil pernyataan
Topik ini memberikan panduan singkat untuk istilah operasional yang digunakan di AthenaEXPLAIN
.
JELASKAN jenis keluaran pernyataan
EXPLAIN
output pernyataan dapat menjadi salah satu dari dua jenis:
-
Rencana logis - Menunjukkan rencana logis yang digunakan mesin SQL untuk mengeksekusi pernyataan. Sintaks untuk opsi ini
EXPLAIN
atauEXPLAIN (TYPE LOGICAL)
. -
Rencana terdistribusi - Menunjukkan rencana eksekusi di lingkungan terdistribusi. Output menunjukkan fragmen, yang memproses tahap. Setiap fragmen rencana diproses oleh satu atau lebih simpul. Data dapat dipertukarkan antara simpul yang memproses fragmen. Sintaks untuk opsi ini
EXPLAIN (TYPE DISTRIBUTED)
.Dalam output untuk rencana terdistribusi, fragmen (tahap pemrosesan) ditunjukkan oleh
Fragment
nomor
[fragment_type
], tempatnomor
adalah bilangan bulat berbasis-nol danfragment_type
menentukan bagaimana fragmen dijalankan oleh simpul. Jenis fragmen, yang memberikan wawasan tata letak Data Exchange, dijelaskan dalam tabel berikut.Jenis fragmen rencana terdistribusiJenis fragmen Deskripsi SINGLE
Fragmen dieksekusi pada satu simpul. HASH
Fragmen dieksekusi pada sejumlah simpul tetap. Input data didistribusikan menggunakan fungsi hash. ROUND_ROBIN
Fragmen dieksekusi pada sejumlah simpul tetap. Input data didistribusikan secara round-robin. BROADCAST
Fragmen dieksekusi pada sejumlah simpul tetap. Input data disiarkan ke semua simpul. SOURCE
Fragmen dijalankan pada simpul tempat perpecahan input diakses.
.exchange
Istilah terkait pertukaran menggambarkan bagaimana data dipertukarkan antara simpul pekerja. Transfer dapat berupa lokal atau remote.
- LocalExchange [
exchange_type
] -
Transfer data secara lokal dalam simpul pekerja untuk berbagai tahap kueri. Nilai untuk
exchange_type
dapat menjadi salah satu jenis pertukaran logis atau terdistribusi seperti yang dijelaskan nanti di bagian ini. - RemoteExchange [
exchange_type
] -
Transfer data antara simpul pekerja untuk berbagai tahap kueri. Nilai untuk
exchange_type
dapat menjadi salah satu jenis pertukaran logis atau terdistribusi seperti yang dijelaskan nanti di bagian ini.
Jenis Pertukaran Logis
Jenis pertukaran berikut menggambarkan tindakan yang diambil selama fase pertukaran dari rencana logis.
-
GATHER
— Sebuah simpul pekerja tunggal mengumpulkan output dari semua simpul pekerja lainnya. Misalnya, tahap terakhir dari kueri pilih mengumpulkan hasil dari semua simpul dan menulis hasilnya ke Amazon S3. -
REPARTITION
— Mengirim data baris ke pekerja tertentu berdasarkan skema partisi yang diperlukan untuk diterapkan ke operator berikutnya. -
REPLICATE
— Salinan data baris untuk semua pekerja.
Jenis Pertukaran Terdistribusi
Jenis pertukaran berikut menunjukkan tata letak data saat mereka dipertukarkan antara simpul dalam rencana terdistribusi.
-
HASH
— Pertukaran mendistribusikan data ke beberapa tujuan menggunakan fungsi hash. -
SINGLE
— Pertukaran mendistribusikan data ke satu tujuan.
Pemindaian
Istilah berikut menjelaskan bagaimana data dipindai selama kueri.
- TableScan
-
Memindai data sumber tabel dari Amazon S3 atau konektor Apache Hive dan berlaku pemangkasan partisi yang dihasilkan dari predikat filter.
- ScanFilter
-
Memindai data sumber tabel dari Amazon S3 atau konektor Hive dan berlaku pemangkasan partisi yang dihasilkan dari predikat filter dan dari predikat filter tambahan tidak diterapkan melalui pemangkasan partisi.
- ScanFilterProject
-
Pertama, memindai data sumber tabel dari Amazon S3 atau konektor Hive dan berlaku pemangkasan partisi yang dihasilkan dari predikat filter dan dari predikat filter tambahan tidak diterapkan melalui pemangkasan partisi. Kemudian, memodifikasi tata letak memori data output ke proyeksi baru untuk meningkatkan performa tahap selanjutnya.
Join
Bergabung data antara dua tabel. Bergabung dapat dikategorikan berdasarkan bergabung jenis dan jenis distribusi.
Bergabunglah dengan tipe
Bergabung jenis menentukan cara tempat bergabung operasi terjadi.
CrossJoin— Menghasilkan produk Cartesian dari dua tabel yang digabungkan.
InnerJoin— Memilih catatan yang memiliki nilai yang cocok di kedua tabel.
LeftJoin— Memilih semua catatan dari tabel kiri dan catatan yang cocok dari tabel kanan. Jika tidak ada pertandingan terjadi, hasil di sisi kanan adalah NULL.
RightJoin— Memilih semua catatan dari tabel kanan, dan catatan yang cocok dari tabel kiri. Jika tidak ada pertandingan terjadi, hasil di sisi kiri adalah NULL.
FullJoin— Memilih semua catatan di mana ada kecocokan di catatan tabel kiri atau kanan. Tabel bergabung berisi semua catatan dari kedua tabel dan mengisi NULLs untuk pertandingan hilang di kedua sisi.
catatan
Untuk alasan performa, mesin permintaan dapat menulis ulang kueri bergabung ke jenis bergabung yang berbeda untuk menghasilkan hasil yang sama. Sebagai contoh, batin bergabung kueri dengan predikat pada satu tabel dapat ditulis ulang menjadiCrossJoin
. Ini mendorong predikat ke fase pemindaian tabel sehingga data yang lebih sedikit dipindai.
Bergabunglah dengan jenis distribusi
jenis distribusi menentukan bagaimana data dipertukarkan antara simpul pekerja saat bergabung operasi dilakukan.
Dipartisi— Kedua tabel kiri dan kanan hash-dipartisi di semua simpul pekerja. distribusi dipartisi mengkonsumsi lebih sedikit memori di setiap simpul. distribusi dipartisi dapat jauh lebih lambat dari direplikasi bergabung. Dipartisi bergabung cocok saat Anda bergabung dua tabel besar.
Replikasi— Satu tabel hash-dipartisi di semua simpul pekerja dan tabel lainnya direplikasi ke semua simpul pekerja untuk melakukan operasi bergabung. Distribusi direplikasi dapat jauh lebih cepat daripada dipartisi bergabung, tetapi mengkonsumsi lebih banyak memori di setiap simpul pekerja. Jika tabel yang direplikasi terlalu besar, node pekerja dapat mengalami out-of-memory kesalahan. Replikasi bergabung cocok saat salah satu tabel bergabung kecil.