我正在使用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')
1条答案
按热度按时间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