Heim >Datenbank >MySQL-Tutorial >Wie verarbeitet SparkSQL Unterabfragen in verschiedenen Versionen?
SparkSQL-Unterstützung für Unterabfragen
In Spark werden Unterabfragen derzeit in begrenzter Form unterstützt. Spark 2.0 und spätere Versionen bieten erweiterte Unterstützung für Unterabfragen, einschließlich korrelierter und unkorrelierter Varianten. In Spark-Versionen vor 2.0 sind Unterabfragen jedoch nur in der FROM-Klausel zulässig, ähnlich wie in Hive-Versionen 0.12 und früher.
Unterabfrage in WHERE-Klausel Fehler
Die Beim Ausführen der bereitgestellten Abfrage in der Spark-Shell ist ein Fehler aufgetreten, der darauf zurückzuführen ist, dass Unterabfragen in der WHERE-Klausel in Spark vor der Version nicht unterstützt werden 2,0. Der Fehler verdeutlicht, dass der Parser eine Klammer erwartet hat, stattdessen aber auf die MAX-Funktion gestoßen ist, was darauf hinweist, dass die Syntax falsch ist.
Unterstützung in Spark 2.0
In Spark 2.0 und höher Unterabfragen können sowohl in der FROM- als auch in der WHERE-Klausel verwendet werden. Die bereitgestellte Abfrage kann wie folgt umgeschrieben werden:
sqlContext.sql("select sal from samplecsv where sal < (select max(sal) from samplecsv)").collect().foreach(println)
Einschränkungen in Spark < 2.0
In Spark-Versionen vor 2.0 werden Unterabfragen nur in der FROM-Klausel unterstützt. Korrelierte Unterabfragen, bei denen die Unterabfrage auf Spalten der äußeren Abfrage verweist, werden nicht unterstützt. Um eine ähnliche Funktionalität zu erreichen, müssen stattdessen kartesische Verknüpfungen verwendet werden.
Das obige ist der detaillierte Inhalt vonWie verarbeitet SparkSQL Unterabfragen in verschiedenen Versionen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!