
# Print结果表
#### 功能描述
Print connector用于将用户输出的数据打印到error文件或者taskmanager的文件中，方便用户查看，主要用于代码调试，查看输出结果。
#### 前提条件
无。
#### 注意事项
- Print结果表支持以下四种格式内容输出：
  
  | 打印内容             | 条件1                                                 | 条件2              |
  |:---|:---|:---|
  | 标识符:任务 ID\> 输出数据 | 需要提供前缀打印标识符，即创建Print表时在with参数中指定print-identifier。   | parallelism \> 1 |
  | 标识符\> 输出数据       | 需要提供前缀打印标识符，即创建Print表时在with参数中指定print-identifier。   | parallelism == 1 |
  | 任务 ID\> 输出数据     | 不需要提供前缀打印标识符，即创建Print表时在with参数中不指定print-identifier。 | parallelism \> 1 |
  | 输出数据             | 不需要提供前缀打印标识符，即创建Print表时在with参数中不指定print-identifier。 | parallelism == 1 |
     
  

- 创建Flink OpenSource SQL作业时，在作业编辑界面的"运行参数"处，"Flink版本"需要选择"1.12"，勾选"保存作业日志"并设置保存作业日志的OBS桶，方便后续查看作业日志。
 
#### 语法格式
```
create table printSink (
  attr_name attr_type 
  (',' attr_name attr_type) * 
  (',' PRIMARY KEY (attr_name,...) NOT ENFORCED)
) with (
  'connector' = 'print',
  'print-identifier' = '',
  'standard-error' = ''
);
```
#### 参数说明
表1参数说明 
| 参数               | 是否必选 | 默认参数  | 数据类型    | 说明                                                                                                                                                                                                                                                                                               |
|:---|:---|:---|:---|:---|
| connector        | 是    | 无     | String  | 固定为：print。                                                                                                                                                                                                                                                                                       |
| print-identifier | 否    | 无     | String  | 配置一个标识符作为输出数据的前缀。                                                                                                                                                                                                                                                                                |
| standard-error   | 否    | false | Boolean | 该值只能为true或false，默认为false。 - 若为true，则表示输出数据到taskmanager的error文件中。  - 若为false，则表示输出数据到taskmanager的out中。   |
   
#### 示例
参考[创建Flink OpenSource作业](https://support.huaweicloud.com/usermanual-dli/dli_01_0498.html)，创建flink opensource sql作业，运行如下作业脚本，通过DataGen表产生随机数据并输出到Print结果表中。
注意：创建作业时，在作业编辑界面的"运行参数"处，"Flink版本"选择"1.12"，勾选"保存作业日志"并设置保存作业日志的OBS桶，方便后续查看作业日志。
```
create table dataGenSource(
  user_id string,
  amount int
) with (
  'connector' = 'datagen',
  'rows-per-second' = '1', --每秒生成一条数据
  'fields.user_id.kind' = 'random', --为字段user_id指定random生成器
  'fields.user_id.length' = '3' --限制user_id长度为3
);
create table printSink(
  user_id string,
  amount int
) with (
  'connector' = 'print'
);
insert into printSink select * from dataGenSource;
```
该作业提交后，作业状态变成"运行中"，后续您可通过如下操作查看输出结果。
- 方法一：
  1. 登录DLI管理控制台，选择"作业管理 \> Flink作业"。
  
  2. 在对应Flink作业所在行的"操作"列，选择"更多 \> FlinkUI"。
  
  3. 在FlinkUI界面，选择"Task Managers"，单击对应的任务名称，选择"Stdout"查看作业运行日志。
   
- 方法二：若在提交运行作业前"运行参数"选择了"保存作业日志"，可以通过如下操作查看。
  1. 登录DLI管理控制台，选择"作业管理 \> Flink作业"。
  
  2. 单击对应的Flink作业名称，选择"运行日志"，单击"OBS桶"，根据作业运行的日期，找到对应日志的文件夹。
  
  3. 进入对应日期的文件夹后，找到名字中包含"taskmanager"的文件夹进入，下载获取taskmanager.out文件查看结果日志。
   
 
