Aller au contenu principal

try_reflect

Ceci est une version spéciale de reflect qui effectue la même opération, mais retourne une valeur NULLE au lieu de lever une erreur si la méthode d'appel a lancé une exception.

Syntaxe

Python
from pyspark.sql import functions as sf

sf.try_reflect(*cols)

parameter

parameter

Type

Description

cols

pyspark.sql.Column ou str

Le premier élément doit être une colonne représentant une chaîne de caractères littérale pour le nom de la classe, et le deuxième élément doit être une colonne représentant une chaîne de caractères littérale pour le nom de la méthode, et les éléments restants sont des arguments d'entrée (colonnes ou noms de colonnes) pour la méthode Java.

parameter

Type

Description

cols

pyspark.sql.Column ou str

Le premier élément doit être une colonne représentant une chaîne de caractères littérale pour le nom de la classe, et le deuxième élément doit être une colonne représentant une chaîne de caractères littérale pour le nom de la méthode, et les éléments restants sont des arguments d'entrée (colonnes ou noms de colonnes) pour la méthode Java.

Exemples

Exemple 1 : représentation d'un appel de méthode avec des arguments

Python
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)
Output
+------------------------------------------+
|try_reflect(java.util.UUID, fromString, a)|
+------------------------------------------+
|a5cf6c42-0c85-418f-af6c-3e4e5b1328f2 |
+------------------------------------------+

**Exemple 2** : Exception dans l'appel de réflexion, résultant en null

Python
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)
Output
+-----------------------------------------+
|try_reflect(scala.Predef, require, false)|
+-----------------------------------------+
|NULL |
+-----------------------------------------+