Maison >base de données >tutoriel mysql >Comment les capacités de sous-requêtes ont-elles évolué dans SparkSQL ?
SparkSQL a été confronté à des limites dans la prise en charge des sous-requêtes, en particulier dans la clause WHERE. Bien que cet article se concentre sur le sujet, il est crucial de noter que les versions récentes de Spark (2.0) offrent une prise en charge plus robuste des sous-requêtes. Dans cette réponse, nous approfondirons les limitations historiques et l'état actuel des sous-requêtes dans SparkSQL.
Spark 2.0 et versions ultérieures
Spark 2.0 a introduit des améliorations significatives aux sous-requêtes manutention. Il prend désormais en charge les sous-requêtes corrélées et non corrélées. Exemples de scénarios pris en charge :
select * from l where exists (select * from r where l.a = r.c)
Pré-Spark 2.0
Avant Spark 2.0, les sous-requêtes étaient limitées à la clause FROM, suivant le comportement de Hive avant version 0.12. Les sous-requêtes de la clause WHERE n'étaient pas prises en charge. Cette restriction provenait du fait que les sous-requêtes pouvaient être exprimées à l'aide d'opérations JOIN.
Par exemple, la requête demandant des salaires inférieurs au salaire maximum dans la table samplecsv :
sqlContext.sql( "select sal from samplecsv where sal < (select MAX(sal) from samplecsv)" ).collect().foreach(println)
ne parviendrait pas à s'exécute avec une erreur indiquant une syntaxe invalide. La solution dans les versions antérieures de Spark impliquerait de réécrire la requête à l'aide d'un JOIN :
sqlContext.sql( "select l.sal from samplecsv l JOIN (select MAX(sal) as max_salary from samplecsv) r ON l.sal < r.max_sale" ).collect().foreach(println)
Fonctionnalités prévues
Pour l'avenir, Spark prévoit d'introduire encore plus d'améliorations. à la prise en charge des sous-requêtes. Ceux-ci incluent :
Conclusion
Les capacités de sous-requêtes de SparkSQL ont subi une évolution substantielle. Avec l'introduction de Spark 2.0, les sous-requêtes sont désormais largement prises en charge, permettant aux développeurs d'exprimer des requêtes complexes plus facilement.
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!