Partager via


try_reflect

Il s’agit d’une version spéciale qui reflect effectue la même opération, mais retourne une valeur NULL au lieu de déclencher une erreur si la méthode invoke lève une exception.

Syntaxe

from pyspark.sql import functions as sf

sf.try_reflect(*cols)

Paramètres

Paramètre Type Descriptif
cols pyspark.sql.Column ou str Le premier élément doit être une colonne représentant une chaîne littérale pour le nom de classe, et le deuxième élément doit être une colonne représentant la chaîne littérale pour le nom de la méthode, et les autres sont des arguments d’entrée (colonnes ou noms de colonnes) à la méthode Java.

Examples

Exemple 1 : Réflexion d’un appel de méthode avec des arguments

from pyspark.sql import functions as sf
df = spark.createDataFrame([("a5cf6c42-0c85-418f-af6c-3e4e5b1328f2",)], ["a"])
df.select(
    sf.try_reflect(sf.lit("java.util.UUID"), sf.lit("fromString"), "a")
).show(truncate=False)
+------------------------------------------+
|try_reflect(java.util.UUID, fromString, a)|
+------------------------------------------+
|a5cf6c42-0c85-418f-af6c-3e4e5b1328f2      |
+------------------------------------------+

Exemple 2 : Exception dans l’appel de réflexion, entraînant la valeur Null

from pyspark.sql import functions as sf
spark.range(1).select(
    sf.try_reflect(sf.lit("scala.Predef"), sf.lit("require"), sf.lit(False))
).show(truncate=False)
+-----------------------------------------+
|try_reflect(scala.Predef, require, false)|
+-----------------------------------------+
|NULL                                     |
+-----------------------------------------+