Compartir vía


try_reflect

Se trata de una versión especial de reflect que realiza la misma operación, pero devuelve un valor NULL en lugar de generar un error si el método invoke produjo una excepción.

Syntax

from pyspark.sql import functions as sf

sf.try_reflect(*cols)

Parámetros

Parámetro Tipo Description
cols pyspark.sql.Column o str El primer elemento debe ser una columna que representa una cadena literal para el nombre de clase y el segundo elemento debe ser una columna que representa la cadena literal para el nombre del método y el resto son argumentos de entrada (columnas o nombres de columna) para el método Java.

Examples

Ejemplo 1: Reflejar una llamada de método con argumentos

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

Ejemplo 2: Excepción en la llamada de reflexión, lo que da como resultado un valor 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                                     |
+-----------------------------------------+