Teilen über


try_reflect

Hierbei handelt es sich um eine spezielle Version, die reflect denselben Vorgang ausführt, aber einen NULL-Wert zurückgibt, anstatt einen Fehler zu auslösen, wenn die Invoke-Methode eine Ausnahme ausgelöst hat.

Syntax

from pyspark.sql import functions as sf

sf.try_reflect(*cols)

Die Parameter

Parameter Typ Description
cols pyspark.sql.Column oder str Das erste Element sollte eine Spalte sein, die literale Zeichenfolge für den Klassennamen darstellt, und das zweite Element sollte eine Spalte sein, die literale Zeichenfolge für den Methodennamen darstellt, und die verbleibenden sind Eingabeargumente (Spalten- oder Spaltennamen) für die Java-Methode.

Examples

Beispiel 1: Reflektieren eines Methodenaufrufs mit Argumenten

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      |
+------------------------------------------+

Beispiel 2: Ausnahme im Spiegelungsaufruf, was zu NULL führt

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                                     |
+-----------------------------------------+