This is an automated email from the ASF dual-hosted git repository. fanjia pushed a commit to branch dev in repository https://gitbox.apache.org/repos/asf/seatunnel.git
The following commit(s) were added to refs/heads/dev by this push: new d2bb190385 [Doc][Improve] support chinese [docs/zh/connector-v2/sink/ObsFile.md] (#8827) d2bb190385 is described below commit d2bb190385fffb3c9c2d2bc8b0a60008af35879e Author: Gemini147258 <885519...@qq.com> AuthorDate: Thu Feb 27 10:08:28 2025 +0800 [Doc][Improve] support chinese [docs/zh/connector-v2/sink/ObsFile.md] (#8827) Co-authored-by: David Zollo <davidzollo...@gmail.com> --- docs/zh/connector-v2/sink/ObsFile.md | 288 +++++++++++++++++++++++++++++++++++ 1 file changed, 288 insertions(+) diff --git a/docs/zh/connector-v2/sink/ObsFile.md b/docs/zh/connector-v2/sink/ObsFile.md new file mode 100644 index 0000000000..220d24a393 --- /dev/null +++ b/docs/zh/connector-v2/sink/ObsFile.md @@ -0,0 +1,288 @@ +# ObsFile + +> Obs file sink 连接器 + +## 支持这些引擎 + +> Spark +> +> Flink +> +> Seatunnel Zeta + +## 主要特性 + +- [x] [精确一次](../../concept/connector-v2-features.md) + +默认情况下,我们使用2PC commit来确保“精确一次”` + +- [x] 文件格式类型 + - [x] text + - [x] csv + - [x] parquet + - [x] orc + - [x] json + - [x] excel + +## 描述 + +将数据输出到华为云obs文件系统。 + +如果你使用spark/flink,为了使用这个连接器,你必须确保你的spark/flink集群已经集成了hadoop。测试的hadoop版本是2.x。 + +如果你使用SeaTunnel Engine,当你下载并安装SeaTunnel引擎时,它会自动集成hadoop jar。您可以在${SEATUNNEL_HOME}/lib下检查jar包以确认这一点。 + +为了支持更多的文件类型,我们进行了一些权衡,因此我们使用HDFS协议对OBS进行内部访问,而这个连接器需要一些hadoop依赖。 +它只支持hadoop版本**2.9.X+**。 + +## 所需Jar包列表 + +| jar | 支持的版本 | Maven下载链接 | +|--------------------|-----------------------------|---------------------------------------------------------------------------------------------------| +| hadoop-huaweicloud | support version >= 3.1.1.29 | [下载](https://repo.huaweicloud.com/artifactory/sdk_public/org/apache/hadoop/hadoop-huaweicloud/) | +| esdk-obs-java | support version >= 3.19.7.3 | [下载](https://repo.huaweicloud.com/artifactory/sdk_public/com/huawei/storage/esdk-obs-java/) | +| okhttp | support version >= 3.11.0 | [下载](https://repo1.maven.org/maven2/com/squareup/okhttp3/okhttp/) | +| okio | support version >= 1.14.0 | [下载](https://repo1.maven.org/maven2/com/squareup/okio/okio/) | + +>请下载“Maven”对应的支持列表,并将其复制到“$SEATUNNEL_HOME/plugins/jdbc/lib/”工作目录。 +> +>并将所有jar复制到$SEATUNNEL_HOME/lib/ + +## 参数 + +| 名称 | 类型 | 是否必填 | 默认值 | 描述 | +|----------------------------------|---------|---------|--------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------| +| path | string | 是 | - | 目标目录路径。 | +| bucket | string | 是 | - | obs文件系统的bucket地址,例如:`obs://obs-bucket-name`. | +| access_key | string | 是 | - | obs文件系统的访问密钥。 | +| access_secret | string | 是 | - | obs文件系统的访问私钥。 | +| endpoint | string | 是 | - | obs文件系统的终端。 | +| custom_filename | boolean | 否 | false | 是否需要自定义文件名。 | +| file_name_expression | string | 否 | "${transactionId}" | 描述将在“路径”中创建的文件表达式。仅在custom_filename为true时使用。[提示](#file_name_expression) | +| filename_time_format | string | 否 | "yyyy.MM.dd" | 指定“path”的时间格式。仅在custom_filename为true时使用。[提示](#filename_time_format) | +| file_format_type | string | 否 | "csv" | 支持的文件类型。[提示](#file_format_type) | +| field_delimiter | string | 否 | '\001' | 数据行中列之间的分隔符。仅在file_format为文本时使用。 | +| row_delimiter | string | 否 | "\n" | 文件中行之间的分隔符。仅被“text”文件格式需要。 | +| have_partition | boolean | 否 | false | 是否需要处理分区。 | +| partition_by | array | 否 | - | 根据所选字段对数据进行分区。只有在have_partition为true时才使用。 | +| partition_dir_expression | string | 否 | "${k0}=${v0}/${k1}=${v1}/.../${kn}=${vn}/" | 只有在have_partition为真true时才使用。[提示](#partition_dir_expression) | +| is_partition_field_write_in_file | boolean | 否 | false | 只有在have_partition为true时才使用。[提示](#is_partition_field_write_in_file) | +| sink_columns | array | 否 | | 当此参数为空时,所有字段都是接收列。[提示](#sink_columns) | +| is_enable_transaction | boolean | 否 | true | [提示](#is_enable_transaction) | +| batch_size | int | 否 | 1000000 | [提示](#batch_size) | +| single_file_mode | boolean | 否 | false | 每个并行处理只会输出一个文件。启用此参数后,batch_size将不会生效。输出文件名没有文件块后缀。 | +| create_empty_file_when_no_data | boolean | 否 | false | 当上游没有数据同步时,仍然会生成相应的数据文件。 | +| compress_codec | string | 否 | none | [提示](#compress_codec) | +| common-options | object | 否 | - | [提示](#common_options) | +| max_rows_in_memory | int | 否 | - | 当文件格式为Excel时,内存中可以缓存的最大数据项数。仅在file_format为excel时使用。 | +| sheet_name | string | 否 | Sheet${Random number} | 标签页。仅在file_format为excel时使用。 | + +### 提示 + +#### <span id="file_name_expression"> file_name_expression </span> + +>仅在“custom_filename”为“true”时使用。 +> +>`file_name_expression`描述了将在`path`中创建的文件表达式。 +> +>我们可以在“file_name_expression”中添加变量“${now}”或“${uuid}”,类似于“test_${uuid}_${now}”, +> +>“${now}”表示当前时间,其格式可以通过指定选项“filename_time_format”来定义。 +请注意,如果`is_enable_transaction`为`true`,我们将自动添加`${transactionId}_`在文件的开头。 + +#### <span id="filename_time_format"> filename_time_format </span> + +>仅在“custom_filename”为“true”时使用。 +> +>当`file_name_expression`参数中的格式为`xxxx-${now}`时,`filename_time_format`可以指定路径的时间格式,默认值为`yyyy.MM.dd`。常用的时间格式如下: + +| Symbol | Description | +|--------|--------------------| +| y | Year | +| M | Month | +| d | Day of month | +| H | Hour in day (0-23) | +| m | Minute in hour | +| s | Second in minute | + +#### <span id="file_format_type"> file_format_type </span> + +>我们支持以下文件类型: +> +> `text` `json` `csv` `orc` `parquet` `excel` + +请注意,最终文件名将以file_format的后缀结尾,文本文件的后缀为“txt”。 + +#### <span id="partition_dir_expression"> partition_dir_expression </span> + +>仅在“have_partition”为“true”时使用。 +> +>如果指定了`partition_by`,我们将根据分区信息生成相应的分区目录,并将最终文件放置在分区目录中。 +> +>默认的`partition_dir_expression`是`${k0}=${v0}/${k1}=${v1}/.../${kn}=${vn}/`.`k0`是第一个分区字段,`v0`是第一个划分字段的值。 + +#### <span id="is_partition_field_write_in_file"> is_partition_field_write_in_file </span> + +>仅在“have_partition”为“true”时使用。 +> +>如果`is_partition_field_write_in_file`为`true`,则分区字段及其值将写入数据文件。 +> +>例如,如果你想写一个Hive数据文件,它的值应该是“false”。 + +#### <span id="sink_columns"> sink_columns </span> + +>哪些列需要写入文件,默认值是从“Transform”或“Source”获取的所有列。 +>字段的顺序决定了文件实际写入的顺序。 + +#### <span id="is_enable_transaction"> is_enable_transaction </span> + +>如果`is_enable_transaction`为`true`,我们将确保数据在写入目标目录时不会丢失或重复。 +> +>请注意,如果`is_enable_transaction`为`true`,我们将自动添加`${transactionId}_`在文件的开头。现在只支持“true”。 + +#### <span id="batch_size"> batch_size </span> + +>文件中的最大行数。对于SeaTunnel引擎,文件中的行数由“batch_size”和“checkpoint.interval”共同决定。如果“checkpoint.interval”的值足够大,sink writer将在文件中写入行,直到文件中的行大于“batch_size”。如果“checkpoint.interval”较小,则接收器写入程序将在新的检查点触发时创建一个新文件。 + +#### <span id="compress_codec"> compress_codec </span> + +>文件的压缩编解码器和支持的详细信息如下所示: +> +> - txt: `lzo` `none` +> - json: `lzo` `none` +> - csv: `lzo` `none` +> - orc: `lzo` `snappy` `lz4` `zlib` `none` +> - parquet: `lzo` `snappy` `lz4` `gzip` `brotli` `zstd` `none` + +请注意,excel类型不支持任何压缩格式 + +#### <span id="common_options"> common options </span> + +>Sink插件常用参数,请参考[Sink common Options](../Sink-common-Options.md)了解详细信息。 + +## 任务示例 + +### text 文件 + +>对于具有“have_partition”、“custom_filename”和“sink_columns”的文本文件格式。 + +```hocon + + ObsFile { + path="/seatunnel/text" + bucket = "obs://obs-bucket-name" + access_key = "xxxxxxxxxxx" + access_secret = "xxxxxxxxxxx" + endpoint = "obs.xxxxxx.myhuaweicloud.com" + file_format_type = "text" + field_delimiter = "\t" + row_delimiter = "\n" + have_partition = true + partition_by = ["age"] + partition_dir_expression = "${k0}=${v0}" + is_partition_field_write_in_file = true + custom_filename = true + file_name_expression = "${transactionId}_${now}" + filename_time_format = "yyyy.MM.dd" + sink_columns = ["name","age"] + is_enable_transaction = true + } + +``` + +### parquet 文件 + +>适用于带有“have_partition”和“sink_columns”的拼花地板文件格式。 + +```hocon + + ObsFile { + path = "/seatunnel/parquet" + bucket = "obs://obs-bucket-name" + access_key = "xxxxxxxxxxx" + access_secret = "xxxxxxxxxxxxxxxxx" + endpoint = "obs.xxxxxx.myhuaweicloud.com" + have_partition = true + partition_by = ["age"] + partition_dir_expression = "${k0}=${v0}" + is_partition_field_write_in_file = true + file_format_type = "parquet" + sink_columns = ["name","age"] + } + +``` + +### orc 文件 + +>对于orc文件格式的简单配置。 + +```hocon + + ObsFile { + path="/seatunnel/orc" + bucket = "obs://obs-bucket-name" + access_key = "xxxxxxxxxxx" + access_secret = "xxxxxxxxxxx" + endpoint = "obs.xxxxx.myhuaweicloud.com" + file_format_type = "orc" + } + +``` + +### json 文件 + +>对于json文件格式简单配置。 + +```hcocn + + ObsFile { + path = "/seatunnel/json" + bucket = "obs://obs-bucket-name" + access_key = "xxxxxxxxxxx" + access_secret = "xxxxxxxxxxx" + endpoint = "obs.xxxxx.myhuaweicloud.com" + file_format_type = "json" + } + +``` + +### excel 文件 + +>对于excel文件格式简单配置。 + +```hcocn + + ObsFile { + path = "/seatunnel/excel" + bucket = "obs://obs-bucket-name" + access_key = "xxxxxxxxxxx" + access_secret = "xxxxxxxxxxx" + endpoint = "obs.xxxxx.myhuaweicloud.com" + file_format_type = "excel" + } + +``` + +### csv 文件 + +>对于csv文件格式简单配置。 + +```hcocn + + ObsFile { + path = "/seatunnel/csv" + bucket = "obs://obs-bucket-name" + access_key = "xxxxxxxxxxx" + access_secret = "xxxxxxxxxxx" + endpoint = "obs.xxxxx.myhuaweicloud.com" + file_format_type = "csv" + } + +``` + +## 变更日志 + +### 下一版本 + +- 添加 Obs Sink 连接器 +