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 "lixin58688@163.com" <li...@163.com> on 2021/08/04 09:32:44 UTC

filesystem connector不支持跨subtask合并小文件

你好,
    在使用filesystem connector过程中,开启了compaction,使用parquet列式文件,指定3个并行度,但发现无论如何也触发不了合并,因为列式文件是checkpoint触发时才会滚动,这样同一checkpoint内会产生与并行度相同的文件,按说此时文件数已经大于1了,为什么不合并呢?

create table fs_parquet_compact
(userid bigint, name string, part string)
PARTITIONED BY (part)
with(
'connector' = 'filesystem',
'path' = 'hdfs:///data/fs_parquet_compact',
'format' = 'parquet',
'auto-compaction' = 'true',
'compaction.file-size' = '2kb',
'sink.rolling-policy.file-size' = '500b',
'sink.rolling-policy.rollover-interval' = '800s',
'sink.rolling-policy.check-interval' = '60s'
);



lixin58688@163.com

Re: Re: filesystem connector不支持跨subtask合并小文件

Posted by Jingsong Li <ji...@gmail.com>.
这个参数的意思是合并后的文件最大的size,你每个文件1k多,两个文件就大于2k了,所以没有触发合并

On Fri, Aug 6, 2021 at 11:59 AM Rui Li <li...@gmail.com> wrote:

> 可以把这个参数调大点试试呢,调成远大于单个文件的size
>
> On Thu, Aug 5, 2021 at 1:43 PM lixin58688@163.com <li...@163.com>
> wrote:
>
> > 你好,
> >     生成的三个文件挺小的,不到2kb,1k多一点,配这个是为了合并后比2k大
> >
> > ------------------------------
> > lixin58688@163.com
> >
> >
> > *发件人:* Rui Li <li...@gmail.com>
> > *发送时间:* 2021-08-05 11:42
> > *收件人:* user-zh <us...@flink.apache.org>
> > *主题:* Re: filesystem connector不支持跨subtask合并小文件
> > 你好,
> >
> > 看到你的compaction.file-size配置成了2kb,这个是希望合并以后的文件的target size只有2kb么
> >
> > On Wed, Aug 4, 2021 at 5:39 PM lixin58688@163.com <li...@163.com>
> > wrote:
> >
> > > 你好,
> > >     在使用filesystem
> > >
> >
> connector过程中,开启了compaction,使用parquet列式文件,指定3个并行度,但发现无论如何也触发不了合并,因为列式文件是checkpoint触发时才会滚动,这样同一checkpoint内会产生与并行度相同的文件,按说此时文件数已经大于1了,为什么不合并呢?
> > >
> > > create table fs_parquet_compact
> > > (userid bigint, name string, part string)
> > > PARTITIONED BY (part)
> > > with(
> > > 'connector' = 'filesystem',
> > > 'path' = 'hdfs:///data/fs_parquet_compact',
> > > 'format' = 'parquet',
> > > 'auto-compaction' = 'true',
> > > 'compaction.file-size' = '2kb',
> > > 'sink.rolling-policy.file-size' = '500b',
> > > 'sink.rolling-policy.rollover-interval' = '800s',
> > > 'sink.rolling-policy.check-interval' = '60s'
> > > );
> > >
> > >
> > >
> > > lixin58688@163.com
> > >
> >
> >
> > --
> > Best regards!
> > Rui Li
> >
> >
>
> --
> Best regards!
> Rui Li
>


-- 
Best, Jingsong Lee

Re: Re: filesystem connector不支持跨subtask合并小文件

Posted by Rui Li <li...@gmail.com>.
可以把这个参数调大点试试呢,调成远大于单个文件的size

On Thu, Aug 5, 2021 at 1:43 PM lixin58688@163.com <li...@163.com>
wrote:

> 你好,
>     生成的三个文件挺小的,不到2kb,1k多一点,配这个是为了合并后比2k大
>
> ------------------------------
> lixin58688@163.com
>
>
> *发件人:* Rui Li <li...@gmail.com>
> *发送时间:* 2021-08-05 11:42
> *收件人:* user-zh <us...@flink.apache.org>
> *主题:* Re: filesystem connector不支持跨subtask合并小文件
> 你好,
>
> 看到你的compaction.file-size配置成了2kb,这个是希望合并以后的文件的target size只有2kb么
>
> On Wed, Aug 4, 2021 at 5:39 PM lixin58688@163.com <li...@163.com>
> wrote:
>
> > 你好,
> >     在使用filesystem
> >
> connector过程中,开启了compaction,使用parquet列式文件,指定3个并行度,但发现无论如何也触发不了合并,因为列式文件是checkpoint触发时才会滚动,这样同一checkpoint内会产生与并行度相同的文件,按说此时文件数已经大于1了,为什么不合并呢?
> >
> > create table fs_parquet_compact
> > (userid bigint, name string, part string)
> > PARTITIONED BY (part)
> > with(
> > 'connector' = 'filesystem',
> > 'path' = 'hdfs:///data/fs_parquet_compact',
> > 'format' = 'parquet',
> > 'auto-compaction' = 'true',
> > 'compaction.file-size' = '2kb',
> > 'sink.rolling-policy.file-size' = '500b',
> > 'sink.rolling-policy.rollover-interval' = '800s',
> > 'sink.rolling-policy.check-interval' = '60s'
> > );
> >
> >
> >
> > lixin58688@163.com
> >
>
>
> --
> Best regards!
> Rui Li
>
>

-- 
Best regards!
Rui Li

Re: Re: filesystem connector不支持跨subtask合并小文件

Posted by "lixin58688@163.com" <li...@163.com>.
你好,
    生成的三个文件挺小的,不到2kb,1k多一点,配这个是为了合并后比2k大



lixin58688@163.com
 
发件人: Rui Li
发送时间: 2021-08-05 11:42
收件人: user-zh
主题: Re: filesystem connector不支持跨subtask合并小文件
你好,
 
看到你的compaction.file-size配置成了2kb,这个是希望合并以后的文件的target size只有2kb么
 
On Wed, Aug 4, 2021 at 5:39 PM lixin58688@163.com <li...@163.com>
wrote:
 
> 你好,
>     在使用filesystem
> connector过程中,开启了compaction,使用parquet列式文件,指定3个并行度,但发现无论如何也触发不了合并,因为列式文件是checkpoint触发时才会滚动,这样同一checkpoint内会产生与并行度相同的文件,按说此时文件数已经大于1了,为什么不合并呢?
>
> create table fs_parquet_compact
> (userid bigint, name string, part string)
> PARTITIONED BY (part)
> with(
> 'connector' = 'filesystem',
> 'path' = 'hdfs:///data/fs_parquet_compact',
> 'format' = 'parquet',
> 'auto-compaction' = 'true',
> 'compaction.file-size' = '2kb',
> 'sink.rolling-policy.file-size' = '500b',
> 'sink.rolling-policy.rollover-interval' = '800s',
> 'sink.rolling-policy.check-interval' = '60s'
> );
>
>
>
> lixin58688@163.com
>
 
 
-- 
Best regards!
Rui Li

Re: filesystem connector不支持跨subtask合并小文件

Posted by Rui Li <li...@gmail.com>.
你好,

看到你的compaction.file-size配置成了2kb,这个是希望合并以后的文件的target size只有2kb么

On Wed, Aug 4, 2021 at 5:39 PM lixin58688@163.com <li...@163.com>
wrote:

> 你好,
>     在使用filesystem
> connector过程中,开启了compaction,使用parquet列式文件,指定3个并行度,但发现无论如何也触发不了合并,因为列式文件是checkpoint触发时才会滚动,这样同一checkpoint内会产生与并行度相同的文件,按说此时文件数已经大于1了,为什么不合并呢?
>
> create table fs_parquet_compact
> (userid bigint, name string, part string)
> PARTITIONED BY (part)
> with(
> 'connector' = 'filesystem',
> 'path' = 'hdfs:///data/fs_parquet_compact',
> 'format' = 'parquet',
> 'auto-compaction' = 'true',
> 'compaction.file-size' = '2kb',
> 'sink.rolling-policy.file-size' = '500b',
> 'sink.rolling-policy.rollover-interval' = '800s',
> 'sink.rolling-policy.check-interval' = '60s'
> );
>
>
>
> lixin58688@163.com
>


-- 
Best regards!
Rui Li