Flink随笔 FileSystem sink

本文介绍了在Flink 1.12.1中使用FileSink处理多进程任务,涉及FileFormat的选择,如Row-encoded Formats和Bulk-encoded Formats,以及BucketAssignment策略,包括DateTimeBucketAssigner和BasePathBucketAssigner。文章还讨论了RollingPolicy的DefaultRollingPolicy和OnCheckpointRollingPolicy,并提到在S3上配置Flink的挑战,如添加插件和配置访问密钥。
摘要由CSDN通过智能技术生成

 

背景

项目中有一个多进程的任务,需要读取 kafka ,对象我们叫他 T,  kafka 是T的PB格式, T有KEY 。  任务的目的是将T 专程JSON 交给下游的分析引擎分析。 每天T 的量有几亿条~

Flink 的版本是 1.12.1 。

 

特点

T 是在 OpenRTB 中记录整个过程的Transaction,同时T 有可能在 transient 状态,是不完整的,所以要判断当前要 emit 的T 是否是完整的,不完整的直接 filter 掉

 

Flink 改写

flink kafka connector 接入 kafka 对应的 topic ,配置 KafkaProducer 等,这个暂且不表,之前的文章讲过。这里主要讲一下 Flink 的 file sink 

参见->https://ci.apache.org/projects/flink/flink-docs-release-1.12/dev/connectors/file_sink.html#s3-specific

 

FileFormat

#首先是FileFormat ,File sink 里边详细分为 Row-encoded Formats 和 Bulk-encoded Formats 。

##Row-encoded Formats  就是具体执行写入 文件系统的writer 需要用它来编码,例子中最简单的就是  SimpleStringEncoder ,我们这里也是用的这个encoder ,因为在数据转换的时候在算子里边已经把 pb 转化成了 json 字符串了~

final FileSink<String> sink = FileSink
    .forRowFormat(new Path(outputPath), new SimpleStringEncoder<String>("UTF-8"))

##  Bulk-encoded Formats 我理解有一些时候成批次的写不等价于 单条写,譬如 parquet , orc 等列式存储结构,批次的大小对于整个文件结构和查询使用性能影响很大,之前做OLAP分析的时候把MONGO数据读出,变形,写出到parquet 中就是用的bulk encoded format 。

官方说明的支持的几种类型

Flink comes with four built-in BulkWriter factories:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值