我可以在 Spark SQL 中看到 UDF 函数的实现吗?

Can I see implementation of UDF function in Spark SQL?

我发现 Spark SQL 没有散列函数。为了 select 特定的散列数据,我需要使用 custom/UDF 这样的函数

    sparkSession.udf.register("hashFuncWithSecret", (s: String) => myHashFunction(s, "my_very_secret_key"))

我希望“my_very_secret_key”不会在其他 spark 会话或 UI 或其他地方的其他地方暴露和可见。我想知道这是否可能。谢谢!

它不会在其他 Spark 会话中可见。您能到达的最远距离是:

scala> spark.catalog.listFunctions.show(false)
+-----+--------+-----------+-----------------------------------------------------+-----------+
|name |database|description|className                                            |isTemporary|
+-----+--------+-----------+-----------------------------------------------------+-----------+
|!    |null    |null       |org.apache.spark.sql.catalyst.expressions.Not        |true       |
|%    |null    |null       |org.apache.spark.sql.catalyst.expressions.Remainder  |true       |
|&    |null    |null       |org.apache.spark.sql.catalyst.expressions.BitwiseAnd |true       |
|*    |null    |null       |org.apache.spark.sql.catalyst.expressions.Multiply   |true       |
|+    |null    |null       |org.apache.spark.sql.catalyst.expressions.Add        |true       |
|-    |null    |null       |org.apache.spark.sql.catalyst.expressions.Subtract   |true       |
...

虽然这不会显示定义。