这是执行相同作的特殊版本 reflect ,但如果调用方法引发异常,则返回 NULL 值,而不是引发错误。
Syntax
from pyspark.sql import functions as sf
sf.try_reflect(*cols)
参数
| 参数 | 类型 | Description |
|---|---|---|
cols |
pyspark.sql.Column 或 str |
第一个元素应该是表示类名的文本字符串的列,第二个元素应该是表示方法名称的文本字符串的列,其余元素是 Java 方法的输入参数(列或列名)。 |
例子
示例 1:使用参数反映方法调用
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 |
+------------------------------------------+
示例 2:反射调用中的异常,导致 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 |
+-----------------------------------------+