Rumah >pangkalan data >tutorial mysql >Bagaimanakah Keupayaan Subkueri Berkembang dalam SparkSQL?
SparkSQL telah menghadapi had dalam menyokong subqueries, terutamanya dalam klausa WHERE. Walaupun artikel ini memfokuskan pada topik, adalah penting untuk ambil perhatian bahawa versi terbaru Spark (2.0 ) menawarkan sokongan yang lebih teguh untuk subkueri. Dalam respons ini, kami akan menyelidiki had sejarah dan keadaan semasa subkueri dalam SparkSQL.
Spark 2.0 dan Above
Spark 2.0 telah memperkenalkan peningkatan ketara pada subkueri pengendalian. Ia kini menyokong kedua-dua subkueri berkorelasi dan tidak berkorelasi. Contoh senario yang disokong termasuk:
select * from l where exists (select * from r where l.a = r.c)
Pra-Spark 2.0
Sebelum Spark 2.0, subkueri dihadkan kepada klausa FROM, mengikut gelagat Hive sebelum ini versi 0.12. Subqueries dalam klausa WHERE tidak disokong. Sekatan ini berpunca daripada fakta bahawa subkueri boleh dinyatakan menggunakan operasi JOIN.
Sebagai contoh, pertanyaan yang meminta gaji kurang daripada gaji maksimum dalam jadual samplecsv:
sqlContext.sql( "select sal from samplecsv where sal < (select MAX(sal) from samplecsv)" ).collect().foreach(println)
Akan gagal untuk laksanakan dengan ralat yang menunjukkan sintaks tidak sah. Penyelesaian dalam versi terdahulu Spark akan melibatkan menulis semula pertanyaan menggunakan JOIN:
sqlContext.sql( "select l.sal from samplecsv l JOIN (select MAX(sal) as max_salary from samplecsv) r ON l.sal < r.max_sale" ).collect().foreach(println)
Ciri Terancang
Melihat ke hadapan, Spark merancang untuk memperkenalkan lebih banyak peningkatan untuk subquery sokongan. Ini termasuk:
Kesimpulan
SparkSQL's subquery keupayaan telah mengalami evolusi yang besar. Dengan pengenalan Spark 2.0, subqueries kini disokong secara meluas, membolehkan pembangun menyatakan pertanyaan yang kompleks dengan lebih mudah.
Atas ialah kandungan terperinci Bagaimanakah Keupayaan Subkueri Berkembang dalam SparkSQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!