Bergabunglah dengan petunjuk - AWS Clean Rooms

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

Bergabunglah dengan petunjuk

Petunjuk bergabung menyarankan strategi bergabung untuk eksekusi kueri. Sintaks, argumen, dan beberapa contoh berasal dari Apache Spark SQL Reference untuk informasi lebih lanjut

MENYIARKAN

Menyarankan bahwa AWS Clean Rooms gunakan broadcast join. Sisi gabungan dengan petunjuk akan disiarkan terlepas dari autoBroadcastJoin Threshold. Jika kedua sisi gabungan memiliki petunjuk siaran, yang dengan ukuran lebih kecil (berdasarkan statistik) akan disiarkan.

Alias: BROADCASTJOIN, MAPJOIN

Parameter: Pengidentifikasi tabel (opsional)

Contoh:

-- Broadcast a specific table SELECT /*+ BROADCAST(students) */ e.name, s.course FROM employees e JOIN students s ON e.id = s.id; -- Broadcast multiple tables SELECT /*+ BROADCASTJOIN(s, d) */ * FROM employees e JOIN students s ON e.id = s.id JOIN departments d ON e.dept_id = d.id;

MERGE

Menyarankan bahwa AWS Clean Rooms gunakan shuffle sort merge join.

Alias: SHUFFLE_MERGE, MERGEJOIN

Parameter: Pengidentifikasi tabel (opsional)

Contoh:

-- Use merge join for a specific table SELECT /*+ MERGE(employees) */ * FROM employees e JOIN students s ON e.id = s.id; -- Use merge join for multiple tables SELECT /*+ MERGEJOIN(e, s, d) */ * FROM employees e JOIN students s ON e.id = s.id JOIN departments d ON e.dept_id = d.id;

SHUFFLE_HASH

Menyarankan bahwa AWS Clean Rooms gunakan shuffle hash join. Jika kedua sisi memiliki petunjuk hash acak, pengoptimal kueri memilih sisi yang lebih kecil (berdasarkan statistik) sebagai sisi build.

Parameter: Pengidentifikasi tabel (opsional)

Contoh:

-- Use shuffle hash join SELECT /*+ SHUFFLE_HASH(students) */ * FROM employees e JOIN students s ON e.id = s.id;

SHUFFLE_REPLICATE_NL

Menyarankan bahwa AWS Clean Rooms gunakan gabungan loop shuffle-and-replicate bersarang.

Parameter: Pengidentifikasi tabel (opsional)

Contoh:

-- Use shuffle-replicate nested loop join SELECT /*+ SHUFFLE_REPLICATE_NL(students) */ * FROM employees e JOIN students s ON e.id = s.id;

Petunjuk Pemecahan Masalah di Spark SQL

Tabel berikut menunjukkan skenario umum di mana petunjuk tidak diterapkan di SparkSQL. Untuk informasi tambahan, lihat Pertimbangan dan batasan.

Kasus Penggunaan Contoh Kueri
Referensi tabel tidak ditemukan
SELECT /*+ BROADCAST(fake_table) */ * FROM employees e INNER JOIN students s ON e.eid = s.sid;
Tabel tidak berpartisipasi dalam operasi bergabung
SELECT /*+ BROADCAST(s) */ * FROM students s WHERE s.age > 25;
Referensi tabel dalam subquery bersarang
SELECT /*+ BROADCAST(s) */ * FROM employees e INNER JOIN (SELECT * FROM students s WHERE s.age > 20) sub ON e.eid = sub.sid;
Nama kolom bukan referensi tabel
SELECT /*+ BROADCAST(e.eid) */ * FROM employees e INNER JOIN students s ON e.eid = s.sid;
Petunjuk tanpa parameter yang diperlukan
SELECT /*+ BROADCAST */ * FROM employees e INNER JOIN students s ON e.eid = s.sid;
Nama tabel dasar bukan alias tabel
SELECT /*+ BROADCAST(employees) */ * FROM employees e INNER JOIN students s ON e.eid = s.sid;