• Flink自定义函数


    Scala function

    需要继承ScalarFunciton类

    制表函数(table function 类似UDTF)

    自定义该函数时需要继承TableFunctioin<一个类或者Row>

    这里泛型中的类的各个属性是转换后表的结构,以下为例,有一个类A,其内部有ID和VALUE两个属性,那么这个A就可以写在泛型中,

    public static class tableFunctionName extend TableFunctioin<A>{
        public void eval(...){具体的制表函数}
    }
    

    如果不想写POJO或者JavaBean,可以写Row(类似Object),但此时需要借助注解

    @FunctionHint(output=@DataTypeHint(“row<ID int, VALUE string>”))
    public static class tableFunctionName extend TableFunctioin<A>{
        public void eval(...){具体的制表函数}
    }
    

    一行变多行

    id value1 value2
    1 a b

    (制表函数上变下)

    id value
    1 a
    1 b

    聚合函数(aggregate function)

    自定义该函数时,需要继承AggregateFunction<T,accumulator>

    T:聚合后结果的类型

    accumulator:累加器

    id value
    1 a
    1 b

    变成

    id value1 value2
    1 a b

    表值聚合函数(table aggregate)

    自定义该函数时,需要继承TableAggregateFunction<T,accumulator>

    T:最终返回的结果的类型

    accumulator:累加器

    关于表函数的使用说明

    各个自定义函数中需要实现一个eval方法

    函数需要先进行注册,后使用

    tEnv.createTemporayFunction("注册函数的名称",注册函数的类名.class)
    

    参考代码

    作者:Ya
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    浅谈iOS的SDK与API
    ulua-应用层模块编码
    ErlangRoad_2
    ErlangRoad_1
    Git笔记--git使用基本概念和术语
    小米Pro 15.6 系统重装记录
    Ubuntu14.04安装opencv2.4.13
    ubuntu配置机器学习环境(四) 安装intel MKL
    ubuntu配置机器学习环境(三) opencv 安装
    ubuntu配置机器学习环境(二) cuda 和cudnn 安装
  • 原文地址:https://www.cnblogs.com/1463490Ya/p/15769963.html
Copyright © 2020-2023  润新知