userDefined源表
功能描述
您可通过编写代码实现从云生态或者开源生态获取数据,再把获取到的数据作为Flink作业的输入数据。
前提条件
自定义source类需要继承类RichParallelSourceFunction,并指定数据类型为Row。
例如自定义类MySource:public class MySource extends RichParallelSourceFunction<Row>{},重点实现其中的open、run、close和cancel函数。实现完成后将该类编译打在jar中,通过sql编辑页的UDF Jar上传。
<dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-streaming-java_2.11</artifactId> <version>${flink.version}</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-core</artifactId> <version>${flink.version}</version> <scope>provided</scope> </dependency>
语法格式
create table userDefinedSource ( attr_name attr_type (',' attr_name attr_type)* ) with ( 'connector.type' = 'user-defined', 'connector.class-name' = '' );
参数说明
参数 |
是否必选 |
说明 |
---|---|---|
connector.type |
是 |
只能为user-defined,表示使用自定义的source。 |
connector.class-name |
是 |
source函数的全限定类名。 |
connector.class-parameter |
否 |
source函数其构造函数的参数,只支持一个String类型的参数。 |
注意事项
connector.class-name需要为全限定类名。
示例
create table userDefinedSource ( attr1 int, attr2 int ) with ( 'connector.type' = 'user-defined', 'connector.class-name' = 'xx.xx.MySource' );