我正在将Dataset API与Flink结合使用,并且尝试通过POJO中的键对镶木地板文件进行分区,例如日期。最终目标是使用以下文件结构写下我的文件。
/output/
20180901/
file.parquet
20180902/
file.parquet
Flink提供了一个方便的类来包装AvroParquetOutputFormat
,如下所示,但是我仍然看不到提供分区键。
HadoopOutputFormat<Void, Pojo> outputFormat =
new HadoopOutputFormat(new AvroParquetOutputFormat(), Job.getInstance());
我正在尝试找出最好的进行方法。我是否需要编写自己的AvroParquetOutputFormat
版本来扩展hadoops MultipleOutputs
类型,还是可以利用Flink API来完成此任务?
Spark中的等效项是
df.write.partitionBy('date').parquet('base path')
答案 0 :(得分:0)
您可以使用BucketingSink<T>
接收器通过提供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