UDF et produits cartésiens
Comprendre le problème
Dans Spark SQL, à l'aide d'un utilisateur personnalisé -Les fonctions définies (UDF) dans les requêtes SQL peuvent parfois conduire à des calculs de produits cartésiens au lieu de la jointure externe complète attendue. Ce problème de performances se pose car l'utilisation des UDF introduit une fonction arbitraire et non déterministe, ce qui rend difficile pour l'optimiseur de déterminer sa valeur sans évaluer toutes les combinaisons d'entrée possibles.
Solution
Contrairement aux UDF, la simple condition d'égalité dans une jointure externe complète (t1.foo = t2.bar) a un comportement prévisible. L'optimiseur peut mélanger les lignes t1 et t2 en fonction respectivement de foo et bar, pour calculer efficacement la jointure.
Prévenir le produit cartésien
À moins de modifier Spark SQL moteur, il n’existe pas de moyen simple de forcer une jointure externe sur le produit cartésien introduit par une UDF. Cette limitation découle de la nature inhérente des UDF, qui nécessitent d'évaluer toutes les combinaisons d'arguments possibles pour déterminer leur valeur.
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!