Maison >base de données >tutoriel mysql >En quoi la prise en charge des sous-requêtes SparkSQL diffère-t-elle entre les versions 2.0 et antérieures ?
Les sous-requêtes sont souvent utilisées dans SQL pour récupérer des informations imbriquées ou effectuer des comparaisons. Bien que SparkSQL prenne en charge certaines sous-requêtes, sa prise en charge n'est pas complète dans toutes les versions. Cet article vise à fournir un aperçu des capacités de sous-requêtes de SparkSQL et à discuter des limitations des versions antérieures.
À partir de Spark 2.0, les sous-requêtes corrélées et non corrélées sont entièrement prises en charge. Cela permet des requêtes SQL plus complexes impliquant des données imbriquées.
Exemples :
select * from l where exists (select * from r where l.a = r.c) select * from l where a in (select c from r)
Dans les versions Spark antérieures à 2.0, les sous-requêtes ne sont prises en charge que dans la clause FROM, similaire aux versions Hive antérieures à 0.12. Les sous-requêtes de la clause WHERE ne sont pas prises en charge.
Par exemple, la requête suivante échouera dans Spark < 2.0 :
sqlContext.sql( "select sal from samplecsv where sal < (select MAX(sal) from samplecsv)" ).collect().foreach(println)
En plus de la prise en charge actuelle, Spark a prévu des fonctionnalités pour améliorer ses capacités de sous-requête :
La prise en charge par SparkSQL des sous-requêtes a considérablement évolué au fil des ans. Alors que les versions antérieures ne prennent en charge qu'un sous-ensemble limité, Spark 2.0 et versions ultérieures offrent une prise en charge complète des sous-requêtes corrélées et non corrélées. Les fonctionnalités prévues visent à améliorer encore cette prise en charge dans les prochaines versions.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!