【问题标题】:Apache Flink - Does DataSet API Support Writing Output to Individual File PartitionsApache Flink - DataSet API 是否支持将输出写入单个文件分区
【发布时间】:2019-02-19 07:55:06
【问题描述】:

我将 Dataset API 与 Flink 一起使用,并且我正在尝试通过我的 POJO 中的键对 parquet 文件进行分区,例如日期。最终目标是使用以下文件结构写下我的文件。

/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')

【问题讨论】:

  • 如果你找到任何解决方案,请帮助我。
  • 我决定使用 Spark。我的生产力更重要。
  • 您好,请给我一个提示如何转换我的 DataSet[MyType] -> DataSet[Void,MyType]

标签: apache-flink parquet


【解决方案1】:

您可以使用BucketingSink&lt;T&gt; 接收器将数据写入您通过提供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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-26
    • 1970-01-01
    • 1970-01-01
    • 2018-05-30
    相关资源
    最近更新 更多