복붙노트

[SQL] SparkSQL 지원 하위 쿼리합니까?

SQL

SparkSQL 지원 하위 쿼리합니까?

나는 스파크 쉘에서이 쿼리를 실행하고 있지만, 그것은 나에게 오류를 제공

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

오류:

해결법

  1. ==============================

    1.계획 기능 :

    계획 기능 :

    스파크 2.0 이상

    스파크 SQL은 모두 상관 관계 및 상관 하위 쿼리를 지원해야한다. 자세한 내용은 SubquerySuite를 참조하십시오. 몇 가지 예는 다음과 같습니다 :

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

    불행하게도 지금으로 (스파크 2.0)는 DataFrame DSL을 사용하여 동일한 논리를 표현하는 것은 불가능합니다.

    스파크 <2.0

    절 FROM (동일 하이브 <= 0.12)에서 스파크가 지원 부질.

    SELECT col FROM (SELECT *  FROM t1 WHERE bar) t2
    

    그것은 단순히 (특히 상관 하위 쿼리) clause.Generally 말하기 임의의 서브 쿼리는 데카르트에 홍보없이 불꽃을 사용하여 표현 할 수없는 WHERE 조인에서 하위 쿼리를 지원하지 않습니다.

    하위 쿼리 성능은 일반적으로 전형적인 관계형 시스템에서 중요한 문제이며 모든 서브 쿼리를 사용하여 표현 될 수 있기 때문에 손실-의 기능 여기가없는 가입하세요.

  2. ==============================

    2.https://issues.apache.org/jira/browse/SPARK-4226

    https://issues.apache.org/jira/browse/SPARK-4226

    해당 기능을 구현하는 풀 요청은 스파크 2.0에 착륙 할 수 내 생각은 ...있다.

  3. from https://stackoverflow.com/questions/33933118/does-sparksql-support-subquery by cc-by-sa and MIT license