You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user-zh@flink.apache.org by 陈帅 <ca...@gmail.com> on 2019/12/08 02:04:14 UTC

Flink实时数仓落Hive一般用哪种方式好?

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

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

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

回复: Flink实时数仓落Hive一般用哪种方式好?

Posted by hiliuxg <73...@qq.com>.
https://github.com/hiliuxg/flink-orc-sink 这个项目能写hdfs orc,并保证exectly once




------------------&nbsp;原始邮件&nbsp;------------------
发件人: "jingwen jingwen"<jingwen.ywb@gmail.com&gt;; 
发送时间: 2019年12月10日(星期二) 中午11:12
收件人: "user-zh"<user-zh@flink.apache.org&gt;; 
主题: Re: Flink实时数仓落Hive一般用哪种方式好?



hbase具备很好的支持随机,实时读取/写入的性能支持,同流计算引擎结合是一个比较好的选择
实时计算直接hdfs,会存在很多性能问题

陈帅 <casel.chen@gmail.com&gt; 于2019年12月10日周二 上午8:21写道:

&gt; 1. 相比Parquet,目前StreamingFileSink支持ORC的难点在哪里呢?
&gt; 2. BulkWriter是不是攒微批写文件的?
&gt;
&gt; JingsongLee <lzljs3620320@aliyun.com.invalid&gt; 于2019年12月9日周一 下午3:24写道:
&gt;
&gt; &gt; Hi 帅,
&gt; &gt; - 目前可以通过改写StreamingFileSink的方式来支持Parquet。
&gt; &gt; (但是目前StreamingFileSink支持ORC比较难)
&gt; &gt; - BulkWriter和批处理没有关系,它只是StreamingFileSink的一种概念。
&gt; &gt; - 如果sync hive分区,这需要自定义了,目前StreamingFileSink没有现成的。
&gt; &gt;
&gt; &gt; 在1.11中,Table层会持续深入这方面的处理,实时数仓落hive,在后续会一一解决数据倾斜、分区可见性等问题。[1]
&gt; &gt;
&gt; &gt; [1] https://issues.apache.org/jira/browse/FLINK-14249
&gt; &gt;
&gt; &gt; Best,
&gt; &gt; Jingsong Lee
&gt; &gt;
&gt; &gt;
&gt; &gt; ------------------------------------------------------------------
&gt; &gt; From:陈帅 <casel.chen@gmail.com&gt;
&gt; &gt; Send Time:2019年12月8日(星期日) 10:04
&gt; &gt; To:user-zh@flink.apache.org <user-zh@flink.apache.org&gt;
&gt; &gt; Subject:Flink实时数仓落Hive一般用哪种方式好?
&gt; &gt;
&gt; &gt; 有人说直接写到HBase,再在Hive关联Hbase表
&gt; &gt; 但是我想直接写文件到HDFS,再通过Hive外表加载,不过有几个问题不明白:
&gt; &gt;
&gt; &gt; 1. 如果用行式格式实时写没有问题,StreamingFileSink也支持,但是如果我想用列式格式(如Parquet或ORC)
&gt; &gt; 写的话,目前来看没有现成的Streaming
&gt; &gt; Writer,官方提供的都是
&gt; &gt; BulkWriter,只支持批处理方式。是不是不建议用列式格式进行流式写?如果能的话需要自己定义StreamingWriter吗?对于
&gt; &gt; 业务上的Update和Delete操作 数据一般是如何sync进Hive的?
&gt; &gt;
&gt; &gt; 2. 写入HDFS文件后,要怎么让Hive自动发现新加的分区?能在Flink ETL程序中一并完成吗?
&gt; &gt;
&gt;

Re: Flink实时数仓落Hive一般用哪种方式好?

Posted by jingwen jingwen <ji...@gmail.com>.
hbase具备很好的支持随机,实时读取/写入的性能支持,同流计算引擎结合是一个比较好的选择
实时计算直接hdfs,会存在很多性能问题

陈帅 <ca...@gmail.com> 于2019年12月10日周二 上午8:21写道:

> 1. 相比Parquet,目前StreamingFileSink支持ORC的难点在哪里呢?
> 2. BulkWriter是不是攒微批写文件的?
>
> JingsongLee <lz...@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:陈帅 <ca...@gmail.com>
> > Send Time:2019年12月8日(星期日) 10:04
> > To:user-zh@flink.apache.org <us...@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程序中一并完成吗?
> >
>

Re: Re: Flink实时数仓落Hive一般用哪种方式好?

Posted by JingsongLee <lz...@aliyun.com.INVALID>.
Hi hjxhainan,

如果你要取消订阅。
请发送邮件到user-zh-unsubscribe@flink.apache.org

Best,
Jingsong Lee


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


怎么退出邮件订阅




hjxhainan@163.com 
发件人: JingsongLee
发送时间: 2019-12-10 10:48
收件人: 陈帅; user-zh@flink.apache.org
主题: Re: Flink实时数仓落Hive一般用哪种方式好?
Hi 陈帅,
1.BulkWriter.Factory接口不适合ORC, 正如yue ma所说,你需要一些改动
2.StreamingFileSink整个机制都是基于做checkpoint才会真正move文件的,不知道你所想的streaming写是什么,以及对你的业务场景有什么要求吗?
Best,
Jingsong Lee
------------------------------------------------------------------
From:陈帅 <ca...@gmail.com>
Send Time:2019年12月10日(星期二) 08:21
To:user-zh@flink.apache.org <us...@flink.apache.org>; JingsongLee <lz...@aliyun.com>
Subject:Re: Flink实时数仓落Hive一般用哪种方式好?
1. 相比Parquet,目前StreamingFileSink支持ORC的难点在哪里呢?
2. BulkWriter是不是攒微批写文件的?
JingsongLee <lz...@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:陈帅 <ca...@gmail.com>
 Send Time:2019年12月8日(星期日) 10:04
To:user-zh@flink.apache.org <us...@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程序中一并完成吗?  

Re: Re: Flink实时数仓落Hive一般用哪种方式好?

Posted by "hjxhainan@163.com" <hj...@163.com>.
怎么退出邮件订阅




hjxhainan@163.com
 
发件人: JingsongLee
发送时间: 2019-12-10 10:48
收件人: 陈帅; user-zh@flink.apache.org
主题: Re: Flink实时数仓落Hive一般用哪种方式好?
Hi 陈帅,
 
1.BulkWriter.Factory接口不适合ORC, 正如yue ma所说,你需要一些改动
2.StreamingFileSink整个机制都是基于做checkpoint才会真正move文件的,不知道你所想的streaming写是什么,以及对你的业务场景有什么要求吗?
 
Best,
Jingsong Lee
 
 
------------------------------------------------------------------
From:陈帅 <ca...@gmail.com>
Send Time:2019年12月10日(星期二) 08:21
To:user-zh@flink.apache.org <us...@flink.apache.org>; JingsongLee <lz...@aliyun.com>
Subject:Re: Flink实时数仓落Hive一般用哪种方式好?
 
1. 相比Parquet,目前StreamingFileSink支持ORC的难点在哪里呢?
2. BulkWriter是不是攒微批写文件的?
JingsongLee <lz...@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:陈帅 <ca...@gmail.com>
Send Time:2019年12月8日(星期日) 10:04
To:user-zh@flink.apache.org <us...@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程序中一并完成吗?

Re: Flink实时数仓落Hive一般用哪种方式好?

Posted by JingsongLee <lz...@aliyun.com.INVALID>.
实时性取决于checkpoint时间间隔。
Flink这边的sink没有合并小文件的功能。

Best,
Jingsong Lee


------------------------------------------------------------------
From:陈帅 <ca...@gmail.com>
Send Time:2019年12月10日(星期二) 21:45
To:JingsongLee <lz...@aliyun.com>
Subject:Re: Flink实时数仓落Hive一般用哪种方式好?

我想要的streaming写就是数据实时写入HDFS文件,场景有实时数据仓库等。需要平衡实时性以及小文件过多的问题。目前处理小文件问题的方法都是在事后合并文件吗?
JingsongLee <lz...@aliyun.com> 于2019年12月10日周二 上午10:48写道:

Hi 陈帅,

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

Best,
Jingsong Lee

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

1. 相比Parquet,目前StreamingFileSink支持ORC的难点在哪里呢?
2. BulkWriter是不是攒微批写文件的?
JingsongLee <lz...@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:陈帅 <ca...@gmail.com>
 Send Time:2019年12月8日(星期日) 10:04
To:user-zh@flink.apache.org <us...@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程序中一并完成吗?

Re: Flink实时数仓落Hive一般用哪种方式好?

Posted by JingsongLee <lz...@aliyun.com.INVALID>.
Hi 陈帅,

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

Best,
Jingsong Lee


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

1. 相比Parquet,目前StreamingFileSink支持ORC的难点在哪里呢?
2. BulkWriter是不是攒微批写文件的?
JingsongLee <lz...@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:陈帅 <ca...@gmail.com>
 Send Time:2019年12月8日(星期日) 10:04
To:user-zh@flink.apache.org <us...@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程序中一并完成吗?

Re: Flink实时数仓落Hive一般用哪种方式好?

Posted by 陈帅 <ca...@gmail.com>.
1. 相比Parquet,目前StreamingFileSink支持ORC的难点在哪里呢?
2. BulkWriter是不是攒微批写文件的?

JingsongLee <lz...@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:陈帅 <ca...@gmail.com>
> Send Time:2019年12月8日(星期日) 10:04
> To:user-zh@flink.apache.org <us...@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程序中一并完成吗?
>

Re: Flink实时数仓落Hive一般用哪种方式好?

Posted by JingsongLee <lz...@aliyun.com.INVALID>.
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:陈帅 <ca...@gmail.com>
Send Time:2019年12月8日(星期日) 10:04
To:user-zh@flink.apache.org <us...@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程序中一并完成吗?

Re: Flink实时数仓落Hive一般用哪种方式好?

Posted by yue ma <ma...@gmail.com>.
可以用改写StreamingfileSink的方式去直接写orc文件
不过这种方式的分区需要手动添加

陈帅 <ca...@gmail.com> 于2019年12月8日周日 上午10:04写道:

> 有人说直接写到HBase,再在Hive关联Hbase表
> 但是我想直接写文件到HDFS,再通过Hive外表加载,不过有几个问题不明白:
>
> 1. 如果用行式格式实时写没有问题,StreamingFileSink也支持,但是如果我想用列式格式(如Parquet或ORC)
> 写的话,目前来看没有现成的Streaming
> Writer,官方提供的都是
> BulkWriter,只支持批处理方式。是不是不建议用列式格式进行流式写?如果能的话需要自己定义StreamingWriter吗?对于
> 业务上的Update和Delete操作 数据一般是如何sync进Hive的?
>
> 2. 写入HDFS文件后,要怎么让Hive自动发现新加的分区?能在Flink ETL程序中一并完成吗?
>