apache flink-dataset api支持将输出写入单个文件分区吗

cgfeq70w  于 2021-06-21  发布在  Flink
关注(0)|答案(1)|浏览(366)

我正在使用flink的dataset api,我正在尝试用pojo中的一个键(例如date)对Parquet文件进行分区。最终目标是使用以下文件结构写下我的文件。

/output/
    20180901/
        file.parquet
    20180902/
        file.parquet

flink提供了一个方便的 Package 类 AvroParquetOutputFormat 如下所示,但我没有看到提供分区键。

HadoopOutputFormat<Void, Pojo> outputFormat = 
    new HadoopOutputFormat(new AvroParquetOutputFormat(), Job.getInstance());

我在想最好的办法。我需要写我自己的版本吗 AvroParquetOutputFormat 它扩展了hadoop MultipleOutputs 或者我可以利用flinkapi来为我做这件事。
Spark的当量是。

df.write.partitionBy('date').parquet('base path')
zc0qhyus

zc0qhyus1#

你可以用 BucketingSink<T> sink在通过提供的示例定义的分区中写入数据 Bucketer 接口。有关示例,请参见datetimebucketer。https://github.com/apache/flink/blob/master/flink-connectors/flink-connector-filesystem/src/main/java/org/apache/flink/streaming/connectors/fs/datetimebucketer.java

相关问题