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 liliang <90...@qq.com> on 2020/11/30 08:57:29 UTC

使用 StreamingFileSink后 checkpoint状态中的数据如何hive读取

本人使用的StreamingFileSink将数据按照行保存到hdfs中
  StreamingFileSink<String> streamingFileSink = StreamingFileSink.
                forRowFormat(new Path(path), new
SimpleStringEncoder<String>("UTF-8"))
                .withBucketAssigner(bucketAssigner)
                .withRollingPolicy(
                        DefaultRollingPolicy.builder()
                               
.withRolloverInterval(TimeUnit.HOURS.toMillis(1))
                               
.withInactivityInterval(TimeUnit.MINUTES.toMillis(30)) 
                                .withMaxPartSize(1024 * 1024 * 1024)
                                .build())
                .withOutputFileConfig(
                        OutputFileConfig.builder()
                                .withPartSuffix(partSuffix)
                                .build()
                )
                .build();
配置如上,checkpoint的配置是10分钟一次,现在有个疑惑想要问下,现在hdfs上文件只是在半个小时都是未完成状态,
如 .part-0-11606723036.inprogress.5b46f31b-8289-44e9-ae26-997f3e479446
这种的处于
inprocress状态,但是我这checkpoint是10分钟一次,如果我的任务在29分钟挂了,那么hdfs上这个文件就肯定不是FINISHED状态,那么那20分钟的数据我这应该怎么处理.
我这现在按照默认的处理中,hive对于inprogress的数据是直接过滤掉的,我这把文件改成正常的名称是能读取到




--
Sent from: http://apache-flink.147419.n8.nabble.com/

Re: 使用 StreamingFileSink后 checkpoint状态中的数据如何hive读取

Posted by admin <17...@163.com>.
hi,
你需要使用oncheckpoint的policy,这样在每次Checkpoint时会滚动文件

> 2020年11月30日 下午4:57,liliang <90...@qq.com> 写道:
> 
> 本人使用的StreamingFileSink将数据按照行保存到hdfs中
>  StreamingFileSink<String> streamingFileSink = StreamingFileSink.
>                forRowFormat(new Path(path), new
> SimpleStringEncoder<String>("UTF-8"))
>                .withBucketAssigner(bucketAssigner)
>                .withRollingPolicy(
>                        DefaultRollingPolicy.builder()
> 
> .withRolloverInterval(TimeUnit.HOURS.toMillis(1))
> 
> .withInactivityInterval(TimeUnit.MINUTES.toMillis(30)) 
>                                .withMaxPartSize(1024 * 1024 * 1024)
>                                .build())
>                .withOutputFileConfig(
>                        OutputFileConfig.builder()
>                                .withPartSuffix(partSuffix)
>                                .build()
>                )
>                .build();
> 配置如上,checkpoint的配置是10分钟一次,现在有个疑惑想要问下,现在hdfs上文件只是在半个小时都是未完成状态,
> 如 .part-0-11606723036.inprogress.5b46f31b-8289-44e9-ae26-997f3e479446
> 这种的处于
> inprocress状态,但是我这checkpoint是10分钟一次,如果我的任务在29分钟挂了,那么hdfs上这个文件就肯定不是FINISHED状态,那么那20分钟的数据我这应该怎么处理.
> 我这现在按照默认的处理中,hive对于inprogress的数据是直接过滤掉的,我这把文件改成正常的名称是能读取到
> 
> 
> 
> 
> --
> Sent from: http://apache-flink.147419.n8.nabble.com/