
# userDefined源表
#### 功能描述
您可通过编写代码实现从云生态或者开源生态获取数据，再把获取到的数据作为Flink作业的输入数据。
#### 前提条件
自定义source类需要继承类RichParallelSourceFunction，并指定数据类型为Row。
例如自定义类MySource：**public class MySource extends RichParallelSourceFunction\<Row\>{}**，重点实现其中的open、run、close和cancel函数。实现完成后将该类编译打在jar中，通过sql编辑页的UDF Jar上传。
依赖的pom配置文件内容参考如下：
```
<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' = ''
);
```
#### 参数说明
表1参数说明 
| 参数                        | 是否必选 | 说明                                 |
|:---|:---|:---|
| 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'
);
```
