Flink教程-flink 1.11使用sql将流式数据写入文件系统

本文介绍Flink中文件系统连接器的使用,包括滚动策略、分区提交、时间抽取和提交策略等内容,通过示例展示了如何配置写入格式、触发器及延迟,适用于HDFS、本地文件系统等。


flink提供了一个file system connector,可以使用DDL创建一个table,然后使用sql的方法将数据写入hdfs、local等文件系统,支持的写入格式包括json、csv、avro、parquet、orc。

一个最简单的DDL如下:

CREATE TABLE fs_table ( 
 user_id STRING, 
 order_amount DOUBLE, 
 dt STRING, 
 h string, 
 m string   
) PARTITIONED BY (dt,h,m) WITH ( 
   'connector'='filesystem', 
   'path'='file:///tmp/abc', 
   'format'='orc' 
 );

下面我们简单的介绍一下相关的概念和如何使用。

滚动策略

Key Default Type
Description
sink.rolling-policy.file-size
128MB
MemorySize
分区文件的最大值,超过这个大小,将会启动一个新文件。
sink.rolling-policy.rollover-interval 30 m Duration 分区文件滚动的最大时间间隔,超过这个时间,将会新启动一个文件
sink.rolling-policy.check-interval 1 m Duration 一个时间间隔,定期去检查上面那个配置指定的策略下,文件是否应该滚动生成新文件.
  • 在写入列格式(比如parquet、orc)的时候,上述的配置和checkpoint的间隔一起来控制滚动策略,也就是说sink.rolling-policy.file-size、sink.rolling-policy.rollover-interval、checkpoint间隔,这三个选项,只要有一个条件达到了,然后就会触发分区文件的滚动,结束上一个文件的写入,生成新文件。
  • 对于写入行格式的数据,比如json、csv,主要是靠sink.rolling-policy.file-size、sink.rolling-policy.rollover-interval,也就是文件的大小和时间来控制写入数据的滚动策略.

分区提交

在往一个分区写完了数据之后,我们希望做一些工作来通知下游。比如在分区目录写一个SUCCESS文件,或者是对于hive来说,去更新metastore的数据,自动刷新一下分区等等。
分区的提交主要依赖于触发器和提交的策略:

  • 触发器:即什么时候触发分区的提交,
  • 提交策略:也就是分区写完之后我们做什么,目前系统提供了两种内置策略:1.往分区目录写一个空SUCCESS文件;2.更新元数据.

分区提交触发器

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值