tente_refletir
Esta é uma versão especial de reflect que realiza as mesmas operações, mas retorna um valor NULL em vez de gerar um erro se o método de invocação lançar uma exceção.
Sintaxe
Python
from pyspark.sql import functions as sf
sf.try_reflect(*cols)
Parâmetros
Parâmetro | Tipo | Descrição |
|---|---|---|
|
| O primeiro elemento deve ser uma coluna representando strings literais para o nome da classe, o segundo elemento deve ser uma coluna representando strings literais para o nome do método e os restantes são argumentos de entrada (colunas ou nomes de colunas) para o método Java . |
Exemplos
Exemplo 1 : Refletindo uma chamada de método com argumentos
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 |
+------------------------------------------+
Exemplo 2 : Exceção na chamada de reflexão, resultando em nulo
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 |
+-----------------------------------------+