必看!S3File Sink Connector 使用文档
S3File 是一个用于管理 Amazon S3(Simple Storage Service)的 Python 模块。当前,Apache SeaTunnel 已经支持 S3File Sink Connector,为了更好地使用这个 Connector,有必要看一下这篇使用文档指南。
描述
将数据输出到 AWS S3 文件系统。
提示:
如果您使用的是 Spark/Flink,在使用此连接器之前,必须确保您的 Spark/Flink 集群已经集成了 Hadoop。Hadoop 2.x 版本已通过测试。
如果您使用的是 SeaTunnel Engine,它会在您下载和安装 SeaTunnel Engine 时自动集成 Hadoop JAR 包。您可以在 ${SEATUNNEL_HOME}/lib
目录下确认这个 JAR 包是否存在。
主要特性
默认情况下,我们使用 2PC 提交来确保 "仅一次语义"。
- 文件格式类型
- 文本 (text)
- CSV
- Parquet
- ORC
- JSON
- Excel
选项
名称 | 类型 | 必需 | 默认值 | 备注 |
---|---|---|---|---|
path | string | 是 | - | |
bucket | string | 是 | - | |
fs.s3a.endpoint | string | 是 | - | |
fs.s3a.aws.credentials.provider | string | 是 | com.amazonaws.auth.InstanceProfileCredentialsProvider | |
access_key | string | 否 | - | 仅在 fs.s3a.aws.credentials.provider = org.apache.hadoop.fs.s3a.SimpleAWSCredentialsProvider 时使用 |
access_secret | string | 否 | - | 仅在 fs.s3a.aws.credentials.provider = org.apache.hadoop.fs.s3a.SimpleAWSCredentialsProvider 时使用 |
custom_filename | boolean | 否 | false | 是否需要自定义文件名 |
file_name_expression | string | 否 | "${transactionId}" | 仅在 custom_filename 为 true 时使用 |
filename_time_format | string | 否 | "yyyy.MM.dd" | 仅在 custom_filename 为 true 时使用 |
file_format_type | string | 否 | "csv" | |
field_delimiter | string | 否 | '\001' | 仅在 file_format 为 text 时使用 |
row_delimiter | string | 否 | "\n" | 仅在 file_format 为 text 时使用 |
have_partition | boolean | 否 | false | 是否需要处理分区 |
partition_by | array | 否 | - | 仅在 have_partition 为 true 时使用 |
partition_dir_expression | string | 否 | "${k0}=${v0}/${k1}=${v1}/.../${kn}=${vn}/" | 仅在 have_partition 为 true 时使用 |
is_partition_field_write_in_file | boolean | 否 | false | 仅在 have_partition 为 true 时使用 |
sink_columns | array | 否 | 当此参数为空时,将写入所有从 "Transform" 或 "Source" 获取的字段 | |
is_enable_transaction | boolean | 否 | true | |
batch_size | int | 否 | 1000000 | |
compress_codec | string | 否 | none | |
common-options | object | 否 | - | |
max_rows_in_memory | int | 否 | - | 仅在 file_format 为 Excel 时使用 |
sheet_name | string | 否 | Sheet$ | 仅在 file_format 为 Excel 时使用 |
path [string]
目标目录路径是必需的。
bucket [string]
S3 文件系统的bucket地址,例如:s3n://seatunnel-test
,如果您使用的是 s3a
协议,此参数应为 s3a://seatunnel-test
。
fs.s3a.endpoint [string]
fs s3a 端点
fs.s3a.aws.credentials.provider [string]
认证 s3a 的方式。目前我们仅支持 org.apache.hadoop.fs.s3a.SimpleAWSCredentialsProvider
和 com.amazonaws.auth.InstanceProfileCredentialsProvider
。
关于凭证提供程序的更多信息,您可以参考 Hadoop AWS 文档
access_key [string]
S3 文件系统的访问密钥。如果未设置此参数,请确认凭证提供程序链可以正确验证,可参考 hadoop-aws。
access_secret [string]
S3 文件系统的访问密钥。如果未设置此参数,请确认凭证提供程序链可以正确验证,可参考 hadoop-aws。
hadoop_s3_properties [map]
如果需要添加其他选项,可以在这里添加并参考此 链接
hadoop_s3_properties {
"fs.s3a.buffer.dir" = "/data/st_test/s3a"
"fs.s3a.fast.upload.buffer" = "disk"
}
custom_filename [boolean]
是否自定义文件名。
file_name_expression [string]
仅在 custom_filename
为 true
时使用
file_name_expression
描述了将创建到 path
中的文件表达式。我们可以在 file_name_expression
中添加变量 ${now}
或 ${uuid}
,例如 test_${uuid}_${now}
,
${now}
代表当前时间,其格式可以通过指定选项 filename_time_format
来定义。
请注意,如果 is_enable_transaction
为 true
,我们将在文件名的开头自动添加${transactionId}_
。
filename_time_format [string]
仅在 custom_filename
为 true
时使用
当 file_name_expression
参数中的格式为 xxxx-${now}
时,filename_time_format
可以指定路径的时间格式,默认值为 yyyy.MM.dd
。常用的时间格式列于下表中:
符号 | 描述 |
---|---|
y | 年 |
M | 月 |
d | 月中的天数 |
H | 一天中的小时 (0-23) |
m | 小时中的分钟 |
s | 分钟中的秒数 |
file_format_type [string]
我们支持以下文件类型:
- 文本 (text)
- JSON
- CSV
- ORC
- Parquet
- Excel
请注意,最终文件名将以文件格式的后缀结尾,文本文件的后缀是 txt
。
field_delimiter [string]
数据行中列之间的分隔符。仅在 file_format
为 text 时需要。
row_delimiter [string]
文件中行之间的分隔符。仅在 file_format
为 text 时需要。
have_partition [boolean]
是否需要处理分区。
partition_by [array]
仅在 have_partition
为 true
时使用。
基于选定字段对分区数据进行分区。
partition_dir_expression [string]
仅在 have_partition
为 true
时使用。
如果指定了 partition_by
,我们将根据分区信息生成相应的分区目录,并将最终文件放在分区目录中。
默认的 partition_dir_expression
是 ${k0}=${v0}/${k1}=${v1}/.../${kn}=${vn}/
。k0
是第一个分区字段,v0
是第一个分区字段的值。
is_partition_field_write_in_file [boolean]
仅在 have_partition
为 true
时使用。
如果 is_partition_field_write_in_file
为 true
,分区字段及其值将写入数据文件中。
例如,如果您想要写入 Hive 数据文件,其值应为 false
。
sink_columns [array]
需要写入文件的哪些列,默认值为从 "Transform" 或 "Source" 获取的所有列。
字段的顺序决定了实际写入文件的顺序。
is_enable_transaction [boolean]
如果 is_enable_transaction
为 true,我们将确保在写入目标目录时数据不会丢失或重复。
请注意,如果 is_enable_transaction
为 true
,我们将在文件头部自动添加 ${transactionId}_
。
目前仅支持 true
。
batch_size [int]
文件中的最大行数。对于 SeaTunnel Engine,文件中的行数由 batch_size
和 checkpoint.interval
共同决定。如果 checkpoint.interval
的值足够大,当文件中的行数大于 batch_size
时,写入器将写入文件。如果 checkpoint.interval
较小,则在新的检查点触发时,写入器将创建一个新文件。
compress_codec [string]
文件的压缩编解码器及其支持的详细信息如下:
- txt:
lzo
none
- JSON:
lzo
none
- CSV:
lzo
none
- ORC:
lzo
snappy
lz4
zlib
none
- Parquet:
lzo
snappy
lz4
gzip
brotli
zstd
none
提示:Excel 类型不支持任何压缩格式。
常见选项
请参考 Sink Common Options 获取 Sink 插件的常见参数详细信息。
max_rows_in_memory [int]
当文件格式为 Excel 时,可以缓存在内存中的数据项的最大数量。
sheet_name [string]
工作簿的工作表名称。
示例
对于文本文件格式,具有 have_partition
、custom_filename
、sink_columns
和 com.amazonaws.auth.InstanceProfileCredentialsProvider
的配置示例:
S3File {
bucket = "s3a://seatunnel-test"
tmp_path = "/tmp/seatunnel"
path="/seatunnel/text"
fs.s3a.endpoint="s3.cn-north-1.amazonaws.com.cn"
fs.s3a.aws.credentials.provider="com.amazonaws.auth.InstanceProfileCredentialsProvider"
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
hadoop_s3_properties {
"fs.s3a.buffer.dir" = "/data/st_test/s3a"
"fs.s3a.fast.upload.buffer" = "disk"
}
}
对于 Parquet 文件格式,仅需用 org.apache.hadoop.fs.s3a.SimpleAWSCredentialsProvider
进行配置:
S3File {
bucket = "s3a://seatunnel-test"
tmp_path = "/tmp/seatunnel"
path="/seatunnel/parquet"
fs.s3a.endpoint="s3.cn-north-1.amazonaws.com.cn"
fs.s3a.aws.credentials.provider="org.apache.hadoop.fs.s3a.SimpleAWSCredentialsProvider"
access_key = "xxxxxxxxxxxxxxxxx"
secret_key = "xxxxxxxxxxxxxxxxx"
file_format_type = "parquet"
hadoop_s3_properties {
"fs.s3a.buffer.dir" = "/data/st_test/s3a"
"fs.s3a.fast.upload.buffer" = "disk"
}
}
对于 orc 文件仅需配置 org.apache.hadoop.fs.s3a.SimpleAWSCredentialsProvider
:
S3File {
bucket = "s3a://seatunnel-test"
tmp_path = "/tmp/seatunnel"
path="/seatunnel/orc"
fs.s3a.endpoint="s3.cn-north-1.amazonaws.com.cn"
fs.s3a.aws.credentials.provider="org.apache.hadoop.fs.s3a.SimpleAWSCredentialsProvider"
access_key = "xxxxxxxxxxxxxxxxx"
secret_key = "xxxxxxxxxxxxxxxxx"
file_format_type = "orc"
}
更新日志
2.3.0-beta 2022-10-20
- 添加 S3File Sink 连接器
2.3.0 2022-12-30
- Bug修复
- 修复了以下导致数据写入文件失败的错误:
- 当上游字段为空时会抛出 NullPointerException
- Sink 列映射失败
- 从状态中恢复写入器时直接获取事务失败 (3258)
- 修复了以下导致数据写入文件失败的错误:
- 功能
下一版本
- [优化]支持文件压缩(3699)
本文由 白鲸开源 提供发布支持!
必看!S3File Sink Connector 使用文档的更多相关文章
- 看云&gitbook 写帮助文档 | 专注于文档在线创作、协作和托管
看云 写帮助文档 | 专注于文档在线创作.协作和托管 https://www.kancloud.cn/manual/thinkphp/1678 https://www.gitbook.com/
- 看淘宝营销api 文档有感
total: use appkey & secrect variance naming rule 提供沙箱环境 使用api gateway 使用rest(但返回结果包裹了 isp.thread ...
- 苹果Xcode帮助文档阅读指南
文档导读 https://developer.apple.com/legacy/library/navigation/ 前面我们讲Xcode的文档结构是在介绍如何能够快速定位到你要找的内容.但是很多人 ...
- 转:苹果Xcode帮助文档阅读指南
一直想写这么一个东西,长期以来我发现很多初学者的问题在于不掌握学习的方法,所以,Xcode那么好的SDK文档摆在那里,对他们也起不到什么太大的作用.从论坛.微博等等地方看到的初学者提出的问题,也暴露出 ...
- apidoc接口文档的快速生成
官方文档连接:http://apidocjs.com/#demo apidoc是一个轻量级的在线REST接口文档生成系统,支持多种主流语言,包括Java.C.C#.PHP和Javascript等.使用 ...
- 【命令】man命令帮助文档详解
前言:Linux命令分为内建命令和外部命令:内建命令是shell本身自带的,外部命令是是一个可执行程序 我们在使用命令帮助的时候需要钱哦区分命令是内建命令还是外部命令 一.查看一个命令是内建命令还是外 ...
- ABP文档 :Overall - Module System
模块介绍 ABP提供了构建模块并将这些模块组合起来创建应用的基础设施.一个模块可以依赖另一个模块.一般来说,一个程序集可以认为是一个模块.如果应用中有多个程序集,建议为每个程序集创建一个模块定义.模块 ...
- Web API 自动生成帮助文档并使用Web API Test Client 测试
之前在项目中有用到webapi对外提供接口,发现在项目中有根据webapi的方法和注释自动生成帮助文档,还可以测试webapi方法,功能很是强大,现拿出来与大家分享一下. 先看一下生成的webapi文 ...
- webAPI 自动生成帮助文档
之前在项目中有用到webapi对外提供接口,发现在项目中有根据webapi的方法和注释自动生成帮助文档,还可以测试webapi方法,功能很是强大,现拿出来与大家分享一下. 先看一下生成的webapi文 ...
- asp.net webAPI 自动生成帮助文档并测试
之前在项目中有用到webapi对外提供接口,发现在项目中有根据webapi的方法和注释自动生成帮助文档,还可以测试webapi方法,功能很是强大,现拿出来与大家分享一下. 先看一下生成的webapi文 ...
随机推荐
- 何时/如何使用 std::enable_shared_from_this<T>?
要点回顾 继承自 std::enable_shared_from_this<T> 的类能够在其自身实例中通过 std::shared_from_this 方法创建一个指向自己的 std:: ...
- 博客正式更换为emlog
Tips:当你看到这个提示的时候,说明当前的文章是由原emlog博客系统搬迁至此的,文章发布时间已过于久远,编排和内容不一定完整,还请谅解` 博客正式更换为emlog 日期:2017-4-2 阿珏 谈 ...
- 深入了解 C# Span:高性能内存操作的利器
深入了解 C# Span:高性能内存操作的利器 在 C# 7.2 中引入的 Span<T> 类型为我们提供了一种高效且安全地对内存进行操作的方式.Span<T> 是一个轻量级的 ...
- NetMvc通过亚马逊方式服务器端和客户端上传MinIO顺利解决
前言: 1.由于项目是.NET Framework 4.7 MVC LayUI,所以需要找一个资源站点存放项目中静态资源文件: 2.需要支持服务端和客户端都支持上传文件方式: 3.调用简单,涉及库越少 ...
- spring使用RedisCacheManager管理key的一些问题
spring可以很好地管理各种内存的快速缓存. 这些常见的内存缓存库实现方式有redis,Ehcache. 本文阐述的是redis,毕竟这个东西相当容易使用. spring通过 org.springf ...
- python重拾第六天-面向对象基础
本节内容: 面向对象编程介绍 为什么要用面向对象进行开发? 面向对象的特性:封装.继承.多态 类.方法. 引子 你现在是一家游戏公司的开发人员,现在需要你开发一款叫做<人狗大战>的 ...
- 2-SET详解
前置知识 SET问题的标准定义:在计算机科学中,布尔可满足性问题(有时称为命题可满足性问题,缩写为SATISFIABILITY或SAT)是确定是否存在满足给定布尔公式的解释的问题.(全是废话) 说人话 ...
- 在C#中使用RabbitMQ做个简单的发送邮件小项目
在C#中使用RabbitMQ做个简单的发送邮件小项目 前言 好久没有做项目了,这次做一个发送邮件的小项目.发邮件是一个比较耗时的操作,之前在我的个人博客里面回复评论和友链申请是会通过发送邮件来通知对方 ...
- 【ClickHouse】0:clickhouse学习2之数据类型
一 :如何查看clickhouse具体支持哪些数据类型? 1:查看官方文档:https://clickhouse.tech/docs/en/sql-reference/data-types/ 2:查看 ...
- vmware安装配置openwrt
前言 OpenWrt是一个轻量的嵌入式linux系统,功能十分强大. 现在将我在vmware上安装OpenWrt的过程简单记录下来,以备后续参考. 环境准备 vmware软件 已经安装好的一个vmwa ...