Hi 陈帅,

1.BulkWriter.Factory接口不适合ORC, 正如yue ma所说,你需要一些改动
2.StreamingFileSink整个机制都是基于做checkpoint才会真正move文件的,不知道你所想的streaming写是什么,以及对你的业务场景有什么要求吗?

Best,
Jingsong Lee


------------------------------------------------------------------
From:陈帅 <casel.c...@gmail.com>
Send Time:2019年12月10日(星期二) 08:21
To:user-zh@flink.apache.org <user-zh@flink.apache.org>; JingsongLee 
<lzljs3620...@aliyun.com>
Subject:Re: Flink实时数仓落Hive一般用哪种方式好?

1. 相比Parquet,目前StreamingFileSink支持ORC的难点在哪里呢?
2. BulkWriter是不是攒微批写文件的?
JingsongLee <lzljs3620...@aliyun.com.invalid> 于2019年12月9日周一 下午3:24写道:
Hi 帅,
 - 目前可以通过改写StreamingFileSink的方式来支持Parquet。
 (但是目前StreamingFileSink支持ORC比较难)
 - BulkWriter和批处理没有关系,它只是StreamingFileSink的一种概念。
 - 如果sync hive分区,这需要自定义了,目前StreamingFileSink没有现成的。

 在1.11中,Table层会持续深入这方面的处理,实时数仓落hive,在后续会一一解决数据倾斜、分区可见性等问题。[1]

 [1] https://issues.apache.org/jira/browse/FLINK-14249

 Best,
 Jingsong Lee


 ------------------------------------------------------------------
 From:陈帅 <casel.c...@gmail.com>
 Send Time:2019年12月8日(星期日) 10:04
To:user-zh@flink.apache.org <user-zh@flink.apache.org>
 Subject:Flink实时数仓落Hive一般用哪种方式好?

 有人说直接写到HBase,再在Hive关联Hbase表
 但是我想直接写文件到HDFS,再通过Hive外表加载,不过有几个问题不明白:

 1. 如果用行式格式实时写没有问题,StreamingFileSink也支持,但是如果我想用列式格式(如Parquet或ORC)
 写的话,目前来看没有现成的Streaming
 Writer,官方提供的都是
 BulkWriter,只支持批处理方式。是不是不建议用列式格式进行流式写?如果能的话需要自己定义StreamingWriter吗?对于
 业务上的Update和Delete操作 数据一般是如何sync进Hive的?

 2. 写入HDFS文件后,要怎么让Hive自动发现新加的分区?能在Flink ETL程序中一并完成吗?

回复