
# Flink流式写Hudi表规则
#### Flink流式写Hudi表参数规范
Flink流式写Hudi表参数规范如下表所示。
表1Flink流式写Hudi表参数规范 
| **参数名称**                                  | **是否必填** | **参数描述**                                                                              | **建议值** |
|:---|:---|:---|:---|
| Connector                                 | 必填       | 读取表类型。                                                                                | hudi    |
| Path                                      | 必填       | 表存储的路径。                                                                               | 根据实际填写  |
| hoodie.datasource.write.recordkey.field   | 必填       | 表的主键。                                                                                 | 根据实际填写  |
| write.precombine.field                    | 必填       | 数据合并字段。                                                                               | 根据实际填写  |
| write.tasks                               | 选填       | 写Hudi表task并行度，默认值为4。                                                                  | 4       |
| index.bootstrap.enabled                   | 选填       | Flink采用的是内存索引，需要将数据的主键缓存到内存中，保证目标表的数据唯一，因此需要配置该值，否则会导致数据重复。默认值为FALSE。Bucket索引时不配置该参数。 | TRUE    |
| write.index_bootstrap.tasks               | 选填       | index.bootstrap.enabled开启后有效，增加任务数提升启动速度。                                             | 4       |
| index.state.ttl                           | 选填       | 索引数据保存时长，默认值为0，表示永久不失效，可根据业务调整。                                                       | 0       |
| compaction.delta_commits                  | 选填       | MOR表Compaction计划触发条件。                                                                 | 200     |
| compaction.async.enabled                  | 必填       | 是否开启在线压缩。将compaction操作转移到sparksql运行，提升写性能。                                            | FALSE   |
| hive_sync.enable                          | 选填       | 是否向Hive同步表信息。                                                                         | True    |
| hive_sync.metastore.uris                  | 选填       | Hivemeta URI信息。                                                                       | 根据实际填写  |
| hive_sync.jdbc_url                        | 选填       | Hive JDBC连接。                                                                          | 根据实际填写  |
| hive_sync.table                           | 选填       | Hive的表名。                                                                              | 根据实际填写  |
| hive_sync.db                              | 选填       | Hive的数据库名，默认为default。                                                                 | 根据实际填写  |
| hive_sync.support_timestamp               | 选填       | 是否支持时间戳。                                                                              | True    |
| changelog.enabled                         | 选填       | 是否写入changelog消息。默认值为false，CDC场景填写为true。                                               | false   |
| hoodie.datasource.write.keygenerator.type | 选填       | Hudi表主键生成类型。当表由SparkSql创建或存在Spark和Flink混合读写同一张表时，参数值必须为"COMPLEX"。                     | COMPLEX |
   
#### 表名必须满足Hive格式要求
- 表名必须以字母或下划线开头，不能以数字开头。
- 表名只能包含字母、数字、下划线。
- 表名长度不能超过128个字符。
- 表名中不能包含空格和特殊字符，如冒号、分号、斜杠等。
- 表名不区分大小写，但建议使用小写字母。
- Hive保留关键字不能作为表名，如select、from、where等。
【示例】表名：
```
my_table、customer_info、sales_data
```
