spark sql 调试技巧--内置udf查看

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现在版本并没有提供相关的接口,注册相关信息。

    原文作者:我要大声告诉你
    原文地址: https://www.jianshu.com/p/f37a716e7a8a
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞