Spark 2.0+
Spark SQL dovrebbe sostenere sia Sottointerrogazioni correlate e non correlate . Vedi SubquerySuite
per i dettagli. Alcuni esempi includono:
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)
Purtroppo come per ora (Spark 2.0) non è possibile esprimere la stessa logica con DataFrame
DSL.
Spark < 2,0
Spark supporta subquery nella clausola FROM
(stessi come Hive < = 0,12).
SELECT col FROM (SELECT * FROM t1 WHERE bar) t2
Semplicemente non supporta subquery nella WHERE
clause.Generally lingua subqueries arbitrarie (in particolare subquery correlate) non potrebbe essere espressa Spark senza promuovere a cartesiana.
Poiché le prestazioni delle subquery sono di solito un problema significativo in un tipico sistema relazionale e ogni subquery può essere espressa utilizzando JOIN
qui non c'è alcuna perdita di funzione qui.