# I/O APIs
 #### write_iceberg
**描述**：将数据写入指定的Iceberg表中。
**语法格式**：
```
write_iceberg(target_name, database, create_if_not_exists=False, overwrite=False, is_external=False, schema=None, explain = None, verbose = True)
```
**输入参数**：
| 参数                | 是否必选 | 参数类型 | 描述                                            |
|:---|:---|:---|:---|
| target_name          | 是     | str    | 目标表的名称。                                        |
| database           | 是    | str   | 表所属的数据库。                                       |
| create_if_not_exists | 否      | bool  | 如果为True，当表不存在时将自动创建该表。                          |
| overwrite          | 否     | bool | 如果为True，将覆盖表中现有的数据。                            |
| is_external         | 否   | bool   | 如果为True，将表视为外部表。                               |
| schema              | 否   | 任意类型  | 表的结构定义，可选参数。                                 |
| explain              | 否     | 字符串  | 可以设置为plan或者performance，分别表示单纯打印执行计划和打印执行的详细信息。 |
| verbose              | 否      | bool | 如果为True，explain为plan时，会增加打印的信息。                |
   
**返回值类型**：str。
 #### write_orc
描述：将数据写入指定的ORC表中。
**语法格式**：
```
write_orc(target_name, database, create_if_not_exists=False, overwrite=False, is_external=False, schema=None, explain = None, verbose = True)
```
**输入参数**：
| 参数                  | 是否必选 | 参数类型  | 描述                                              |
|:---|:---|:---|:---|
| target_name         | 是    | str   | 目标表的名称。                                            |
| database              | 是   | str   | 表所属的数据库。                                         |
| create_if_not_exists | 否     | bool | 如果为True，当表不存在时将自动创建该表。                          |
| overwrite             | 否    | bool  | 如果为True，将覆盖表中现有的数据。                              |
| is_external          | 否   | bool   | 如果为True，将表视为外部表。                                 |
| schema             | 否    | 任意类型  | 表的结构定义，可选参数。                                     |
| explain            | 否    | 字符串 | 可以设置为plan或者performance，分别表示单纯打印执行计划和打印执行的详细信息。 |
| verbose            | 否     | bool | 如果为True，explain为plan时，会增加打印的信息。                |
   
**返回值类型**：str。
 #### write_parquet
**描述**：将数据写入指定的parquet表中。
**语法格式**：
```
write_parquet(target_name, database, create_if_not_exists=False, overwrite=False, is_external=False, schema=None, explain = None, verbose = True)
```
**输入参数**：
| 参数                 | 是否必选 | 参数类型 | 描述                                            |
|:---|:---|:---|:---|
| target_name       | 是      | str   | 目标表的名称。                                      |
| database            | 是     | str   | 表所属的数据库。                                      |
| create_if_not_exists | 否   | bool  | 如果为True，当表不存在时将自动创建该表。                           |
| overwrite          | 否     | bool  | 如果为True，将覆盖表中现有的数据。                            |
| is_external        | 否      | bool   | 如果为True，将表视为外部表。                               |
| schema             | 否     | 任意类型   | 表的结构定义，可选参数。                                   |
| explain           | 否    | 字符串   | 可以设置为plan或者performance，分别表示单纯打印执行计划和打印执行的详细信息。 |
| verbose           | 否    | bool   | 如果为True，explain为plan时，会增加打印的信息。                |
   
**返回值类型**：str。
 #### write_text
**描述**：将文本数据写入到指定路径的OBS中。
**语法格式**：
```
write_text(path, field_delim, max_rows_per_file=None)
```
**输入参数**：
| 参数                  | 是否必选 | 参数类型  | 描述                                                                  |
|:---|:---|:---|:---|
| path                 | 是      | str | OBS中存放文本的路径。                                                          |
| field_delim         | 是   | str  | 指定TEXT数据文件行数据的字段分隔符，不能是'\\\\.abcdefghijklmnopqrstuvwxyz0123456789'。 |
| max_rows_per_file | 否      | int    | 指定一个文件写入最大行数。                                                       |
   
**返回值类型**：None。
 #### write_json
**描述**：将JSON数据写入到指定路径的OBS中。
**语法格式**：
```
write_json(path, max_rows_per_file=None, ignore_null_fields=False, nested_separator=None)
```
**输入参数**：
| 参数                 | 是否必选 | 参数类型 | 描述                                                                               |
|:---|:---|:---|:---|
| path            | 是     | str   | OBS中存放JSON数据的路径。                                                                  |
| max_rows_per_file | 否       | int  | 指定一个文件写入最大行数。                                                                    |
| ignore_null_fields | 否     | bool  | 写入JSON对象时是否忽略JSON value为NULL的JSON key。                                           |
| nested_separator     | 否      | str   | 设置嵌套JSON key拼接分隔符，不能指定为# ，比如：设置'_'后，{"a":{"b":1}}映射到列a_b，列a_b值为1；默认不支持JSON嵌套读写。 |
   
**返回值类型**：None。
 #### read_text
**描述**：从OBS指定的路径中读取TEXT文件到指定schema的Dataset中。
**语法格式**：
```
read_text(path, schema, field_delim='\t', drop_empty_lines=True, fill_missing_fields=False, ignore_extra_data=False)
```
**输入参数**：
| 参数                   | 是否必选 | 参数类型 | 描述                                                                   |
|:---|:---|:---|:---|
| path                | 是      | str  | OBS中存放文本文件的目录路径。                                                    |
| schema               | 是     | dict | 读取文本文件的列信息。                                                          |
| field_delim         | 否      | str | 指定TEXT数据文件行数据的字段分隔符，不能是'\\\\.abcdefghijklmnopqrstuvwxyz0123456789'。 |
| drop_empty_lines   | 否       | bool | 是否丢弃文本中的空行或单行的\\n 、\\r、\\t。                                           |
| fill_missing_fields | 否    | bool | 当行按照field_delim进行分隔时，是否在分隔结果小于列数时报错。                                  |
| ignore_extra_data   | 否     | bool  | 当行按照field_delim进行分隔时，是否在分隔结果多于列数时报错。                               |
   
**返回值类型**：dataset，dataset是text文本集合。
 #### read_json
**描述**：从OBS指定的路径中按照schema读取指定JSON key的JSON value。
**语法格式**：
```
read_json(path, schema, skip_empty_files=False, nested_separator=None)
```
**输入参数**：
| 参数               | 是否必选 | 参数类型 | 描述                                                                             |
|:---|:---|:---|:---|
| path              | 是      | str  | OBS中存放JSON文件的目录路径。                                                           |
| schema           | 是     | dict | 读取指定key的列信息。                                                                    |
| skip_empty_files | 否      | bool | 是否跳过JSON内容为'{}'的内容。                                                             |
| nested_separator   | 否     | str   | 设置嵌套JSON key拼接分隔符，不能指定为#，比如：设置'_'后，{"a":{"b":1}}映射到列a_b，列a_b值为1；默认不支持JSON嵌套读写。 |
   
**返回值类型**：dataset，dataset是JSON对象集合。
