Unterabfragen werden in SQL häufig verwendet, um verschachtelte Informationen abzurufen oder Vergleiche durchzuführen. Obwohl SparkSQL bestimmte Unterabfragen unterstützt, ist die Unterstützung nicht in allen Versionen umfassend. Ziel dieses Artikels ist es, einen Überblick über die Unterabfragefunktionen von SparkSQL zu geben und die Einschränkungen in früheren Versionen zu diskutieren.
Ab Spark 2.0 werden sowohl korrelierte als auch unkorrelierte Unterabfragen vollständig unterstützt. Dies ermöglicht komplexere SQL-Abfragen mit verschachtelten Daten.
Beispiele:
select * from l where exists (select * from r where l.a = r.c) select * from l where a in (select c from r)
In Spark-Versionen vor 2.0 werden Unterabfragen nur in der FROM-Klausel unterstützt, ähnlich wie bei Hive-Versionen vor 0.12. Unterabfragen in der WHERE-Klausel werden nicht unterstützt.
Zum Beispiel schlägt die folgende Abfrage in Spark < fehl. 2.0:
sqlContext.sql( "select sal from samplecsv where sal < (select MAX(sal) from samplecsv)" ).collect().foreach(println)
Zusätzlich zur aktuellen Unterstützung hat Spark Funktionen zur Verbesserung seiner Unterabfragefunktionen geplant:
Die Unterstützung von SparkSQL für Unterabfragen hat sich im Laufe der Jahre erheblich weiterentwickelt. Während frühere Versionen nur eine begrenzte Teilmenge unterstützen, bieten Spark 2.0 und höher umfassende Unterstützung sowohl für korrelierte als auch nicht korrelierte Unterabfragen. Geplante Funktionen zielen darauf ab, diese Unterstützung in zukünftigen Versionen weiter zu verbessern.
Das obige ist der detaillierte Inhalt vonWie unterscheidet sich die SparkSQL-Unterabfrageunterstützung zwischen Version 2.0 und früheren Versionen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!