首頁 >資料庫 >mysql教程 >SparkSQL 2.0 版本及更早版本之間的子查詢支援有何不同?

SparkSQL 2.0 版本及更早版本之間的子查詢支援有何不同?

Barbara Streisand
Barbara Streisand原創
2025-01-03 17:52:38303瀏覽

How Does SparkSQL Subquery Support Differ Between Versions 2.0 and Earlier?

SparkSQL 中的子查詢支援

簡介

子查詢通常在 SQL 中用於檢索巢狀資訊或執行比較。雖然 SparkSQL 支援某些子查詢,但其支援並不全面。本文旨在概述 SparkSQL 的子查詢功能,並討論早期版本中的限制。

Spark 2.0

從 Spark 2.0 開始,完全支援相關和不相關子查詢。這允許涉及嵌套資料的更複雜的 SQL 查詢。

範例:

select * from l where exists (select * from r where l.a = r.c)
select * from l where a in (select c from r)

Spark

Spark

Spark

sqlContext.sql(
 "select sal from samplecsv where sal < (select MAX(sal) from samplecsv)"
).collect().foreach(println)
Spark

2.0

2.0 之前的Spark 版本中,僅在FROM子句中支援子查詢,類似於 0.12 之前的 Hive 版本。不支援 WHERE 子句中的子查詢。

例如,以下查詢在Spark
    中將失敗2.0:
  • 計劃的功能
除了當前的支援之外,Spark 還計劃增強其子查詢功能:

SPARK-23945:支援使用單列DataFrame作為輸入Column.isin().

SPARK-18455:相關子查詢處理的一般支援。 結論SparkSQL 對子查詢的支援多年來已經有了顯著的發展。雖然早期版本僅支援有限的子集,但 Spark 2.0 及更高版本為相關和不相關子查詢提供全面支援。計劃的功能旨在在未來版本中進一步改進這種支援。

以上是SparkSQL 2.0 版本及更早版本之間的子查詢支援有何不同?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn