Prise en charge SparkSQL des sous-requêtes
Dans Spark, les sous-requêtes sont actuellement prises en charge sous des formes limitées. Spark 2.0 et les versions ultérieures offrent une prise en charge étendue des sous-requêtes, y compris des variantes corrélées et non corrélées. Cependant, dans les versions Spark antérieures à 2.0, les sous-requêtes ne sont autorisées que dans la clause FROM, comme dans les versions 0.12 et antérieures de Hive.
Erreur de sous-requête dans la clause WHERE
L'erreur L'erreur rencontrée lors de l'exécution de la requête fournie dans le shell Spark est due au fait que les sous-requêtes de la clause WHERE ne sont pas prises en charge dans Spark avant la version 2.0. L'erreur souligne que l'analyseur s'attendait à une parenthèse mais a rencontré la fonction MAX à la place, indiquant que la syntaxe est incorrecte.
Support dans Spark 2.0
Dans Spark 2.0 et versions ultérieures , les sous-requêtes peuvent être utilisées dans les clauses FROM et WHERE. La requête fournie peut être réécrite comme suit :
sqlContext.sql("select sal from samplecsv where sal < (select max(sal) from samplecsv)").collect().foreach(println)
Limitations dans Spark < 2.0
Dans les versions Spark antérieures à 2.0, les sous-requêtes ne sont prises en charge que dans la clause FROM. Les sous-requêtes corrélées, dans lesquelles la sous-requête fait référence aux colonnes de la requête externe, ne sont pas prises en charge. Pour obtenir une fonctionnalité similaire, des jointures cartésiennes doivent être utilisées à la place.
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!