サブクエリは、ネストされた情報を取得したり、比較を実行したりするために SQL でよく使用されます。 SparkSQL は特定のサブクエリをサポートしていますが、そのサポートはすべてのバージョンにわたって包括的ではありません。この記事の目的は、SparkSQL のサブクエリ機能の概要を提供し、以前のバージョンの制限について説明することです。
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)
2.0 より前の Spark バージョンでは、0.12 より前の Hive バージョンと同様に、サブクエリは FROM 句でのみサポートされます。 WHERE 句のサブクエリはサポートされていません。
たとえば、次のクエリは Spark では失敗します。 2.0:
sqlContext.sql( "select sal from samplecsv where sal < (select MAX(sal) from samplecsv)" ).collect().foreach(println)
現在のサポートに加えて、Spark はサブクエリ機能を強化する計画された機能を備えています:
SparkSQL のサブクエリのサポートは、長年にわたって大幅に進化してきました。以前のバージョンでは限られたサブセットのみがサポートされていましたが、Spark 2.0 以降では、相関サブクエリと非相関サブクエリの両方に対する包括的なサポートが提供されます。計画されている機能は、将来のリリースでこのサポートをさらに改善することを目的としています。
以上がSparkSQL サブクエリのサポートはバージョン 2.0 以前とどのように異なりますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。