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

classic Classic list List threaded Threaded
10 messages Options
Reply | Threaded
Open this post in threaded view
|

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

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

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

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

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

JingsongLee
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:陈帅 <[hidden email]>
Send Time:2019年12月8日(星期日) 10:04
To:[hidden email] <[hidden email]>
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程序中一并完成吗?
Reply | Threaded
Open this post in threaded view
|

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

yue ma
In reply to this post by 陈帅
可以用改写StreamingfileSink的方式去直接写orc文件
不过这种方式的分区需要手动添加

陈帅 <[hidden email]> 于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程序中一并完成吗?
>
Reply | Threaded
Open this post in threaded view
|

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

陈帅
In reply to this post by JingsongLee
1. 相比Parquet,目前StreamingFileSink支持ORC的难点在哪里呢?
2. BulkWriter是不是攒微批写文件的?

JingsongLee <[hidden email]> 于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:陈帅 <[hidden email]>
> Send Time:2019年12月8日(星期日) 10:04
> To:[hidden email] <[hidden email]>
> 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程序中一并完成吗?
>
Reply | Threaded
Open this post in threaded view
|

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

JingsongLee
Hi 陈帅,

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

Best,
Jingsong Lee


------------------------------------------------------------------
From:陈帅 <[hidden email]>
Send Time:2019年12月10日(星期二) 08:21
To:[hidden email] <[hidden email]>; JingsongLee <[hidden email]>
Subject:Re: Flink实时数仓落Hive一般用哪种方式好?

1. 相比Parquet,目前StreamingFileSink支持ORC的难点在哪里呢?
2. BulkWriter是不是攒微批写文件的?
JingsongLee <[hidden email]> 于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:陈帅 <[hidden email]>
 Send Time:2019年12月8日(星期日) 10:04
To:[hidden email] <[hidden email]>
 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程序中一并完成吗?
Reply | Threaded
Open this post in threaded view
|

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

hjxhainan@163.com
怎么退出邮件订阅




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

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

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

陈帅 <[hidden email]> 于2019年12月10日周二 上午8:21写道:

> 1. 相比Parquet,目前StreamingFileSink支持ORC的难点在哪里呢?
> 2. BulkWriter是不是攒微批写文件的?
>
> JingsongLee <[hidden email]> 于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:陈帅 <[hidden email]>
> > Send Time:2019年12月8日(星期日) 10:04
> > To:[hidden email] <[hidden email]>
> > 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程序中一并完成吗?
> >
>
Reply | Threaded
Open this post in threaded view
|

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

hiroot
https://github.com/hiliuxg/flink-orc-sink 这个项目能写hdfs orc,并保证exectly once




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



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

陈帅 <[hidden email]&gt; 于2019年12月10日周二 上午8:21写道:

&gt; 1. 相比Parquet,目前StreamingFileSink支持ORC的难点在哪里呢?
&gt; 2. BulkWriter是不是攒微批写文件的?
&gt;
&gt; JingsongLee <[hidden email]&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:陈帅 <[hidden email]&gt;
&gt; &gt; Send Time:2019年12月8日(星期日) 10:04
&gt; &gt; To:[hidden email] <[hidden email]&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;
Reply | Threaded
Open this post in threaded view
|

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

JingsongLee
In reply to this post by hjxhainan@163.com
Hi hjxhainan,

如果你要取消订阅。
请发送邮件到user-[hidden email]

Best,
Jingsong Lee


------------------------------------------------------------------
From:[hidden email] <[hidden email]>
Send Time:2019年12月10日(星期二) 10:52
To:user-zh <[hidden email]>; JingsongLee <[hidden email]>; 陈帅 <[hidden email]>
Subject:Re: Re: Flink实时数仓落Hive一般用哪种方式好?


怎么退出邮件订阅




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

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

JingsongLee
In reply to this post by JingsongLee
实时性取决于checkpoint时间间隔。
Flink这边的sink没有合并小文件的功能。

Best,
Jingsong Lee


------------------------------------------------------------------
From:陈帅 <[hidden email]>
Send Time:2019年12月10日(星期二) 21:45
To:JingsongLee <[hidden email]>
Subject:Re: Flink实时数仓落Hive一般用哪种方式好?

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

Hi 陈帅,

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

Best,
Jingsong Lee

------------------------------------------------------------------
From:陈帅 <[hidden email]>
Send Time:2019年12月10日(星期二) 08:21
To:[hidden email] <[hidden email]>; JingsongLee <[hidden email]>
Subject:Re: Flink实时数仓落Hive一般用哪种方式好?

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