【问题标题】:Extracting a field value (mostly constant) from Apache Flink Datastream<GenericRecord>从 Apache Flink Datastream<GenericRecord> 中提取字段值(大部分是常量)
【发布时间】:2021-11-24 06:20:23
【问题描述】:

我有一个数据流,其中包含一些字段,例如 event_id、时间戳等,这些字段对于管道中的许多记录保持不变。我想在使用 StreamingFileSink 将其写回 ParquetFormat 时使用文件名中的那些。如果我们使用常量,我们可以使用后缀和前缀。但是,我需要帮助从记录中提取可用于生成文件名的值。

文件名模式_ --.parquet

OutputFileConfig config = OutputFileConfig
 .builder()
 .withPartPrefix("prefix")
 .withPartSuffix(".ext")
 .build();

我打算使用它,但在从记录本身中提取“前缀”方面需要帮助。

对此的任何想法都会很有帮助。 在此先感谢:)

【问题讨论】:

    标签: apache-flink flink-streaming flink-batch


    【解决方案1】:

    OutputFileConfig目前的实现只支持固定前缀和后缀参数,不支持自定义逻辑

    public class OutputFileConfig implements Serializable {
    
        private final String partPrefix;
    
        private final String partSuffix;
    
        /**
         * Initiates the {@code PartFileConfig} with values passed as parameters.
         *
         * @param partPrefix - the beginning of part file name
         * @param partSuffix - the ending of part file name
         */
        public OutputFileConfig(final String partPrefix, final String partSuffix) {
            this.partPrefix = Preconditions.checkNotNull(partPrefix);
            this.partSuffix = Preconditions.checkNotNull(partSuffix);
        }
    

    【讨论】:

    • 确实如此。我从 StackOverflow 的各种答案中得到它。感谢常丽的详细解答
    猜你喜欢
    • 1970-01-01
    • 2018-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-24
    • 2019-11-09
    相关资源
    最近更新 更多