spark sql 调试技巧--内置udf查看
Spark SQL
内置了许多常用的udf
,我们该如何拿到用户的udf
和内置的udf
呢?
DataFrame级别
对于DataFrame
级别的udf
,我们可以访问functions找到我们需要的函数。这里我们就不过多讲解。
SQL级别
对于sql
级别其实spark是提供了查询接口的
http --form POST http://localhost:9003/run/sql \
sql='
show functions
'
查询结果:
[
{
"function": "from_json"
},
{
"function": "to_json"
},
{
"function": "to_timestamp"
},
{
"function": "to_unix_timestamp"
},
{
"function": "to_utc_timestamp"
},
{
"function": "translate"
}
]
查询结果过多,只列出部分
虽然我们查询到了方法,但是我们该如何去查看udf该怎么使用呢?其实spark sql
也是提供了查询接口的
我们可以用describe function extended ${function_name}
语法来查看function_name
如何使用。例如,我们要查询from_json
如何使用:
describe function extended from_json
查询结果:
[
{
"function_desc": "Function: from_json"
},
{
"function_desc": "Class: org.apache.spark.sql.catalyst.expressions.JsonToStructs"
},
{
"function_desc": "Usage: from_json(jsonStr, schema[, options]) - Returns a struct value with the given `jsonStr` and `schema`."
},
{
"function_desc": "Extended Usage:\n Examples:\n > SELECT from_json('{\"a\":1, \"b\":0.8}', 'a INT, b DOUBLE');\n {\"a\":1, \"b\":0.8}\n > SELECT from_json('{\"time\":\"26/08/2015\"}', 'time Timestamp', map('timestampFormat', 'dd/MM/yyyy'));\n {\"time\":\"2015-08-26 00:00:00.0\"}\n "
}
]
通过desc
我们就可以查询相关的udf
的实现类,使用方法和用例。
问题
但是对用户注册的udf
现在版本并没有提供相关的接口,注册相关信息。