首页 > 其他分享 >flink-配置文件

flink-配置文件

时间:2024-12-23 15:19:36浏览次数:6  
标签:String 配置文件 flink getValue ConfigManager static key public

package com.ecarx.sumatra.data.tab.conf;

import org.apache.flink.api.java.utils.ParameterTool;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.io.IOException;
import java.util.Optional;

public class ConfigManager {
    private static final Logger LOG = LoggerFactory.getLogger(ConfigManager.class);
    private static ParameterTool parameterTool;

    /**
     * 初始化配置管理器并加载指定环境的配置文件。
     *
     * @param env 环境名称(例如 "dev", "test", "prod")
     */
    public static void init(String env) {
        String configFilePath = String.format("/application-%s.properties", env);

        try (var configStream = ConfigManager.class.getResourceAsStream(configFilePath)) {
            if (configStream == null) {
                throw new IOException("Configuration file not found: " + configFilePath);
            }
            parameterTool = ParameterTool.fromPropertiesFile(configStream);

            LOG.info("Application running on environment: {}", env);
            LOG.debug("Loaded configuration from: {}", configFilePath);
        } catch (IOException e) {
            LOG.error("Failed to load configuration files.", e);
            throw new RuntimeException("Initialization failed due to configuration loading error.", e);
        }
    }

    /**
     * 获取配置项的值。
     *
     * @param key 配置项的键
     * @return 对应的值,如果没有找到则返回 null
     */
    public static String getValue(String key) {
        return Optional.ofNullable(parameterTool).map(tool -> tool.get(key)).orElse(null);
    }

    /**
     * 获取指定类型的配置项值。
     *
     * @param <T>   配置项类型
     * @param key   配置项的键
     * @param clazz 配置项的目标类型
     * @return 对应的值,如果没有找到则返回 null
     */
    public static <T> T getValue(String key, Class<T> clazz) {
        if (clazz == Integer.class) {
            return clazz.cast(Optional.ofNullable(parameterTool)
                    .map(tool -> tool.getInt(key))
                    .orElse(null));
        } else if (clazz == Boolean.class) {
            return clazz.cast(Optional.ofNullable(parameterTool)
                    .map(tool -> tool.getBoolean(key))
                    .orElse(null));
        } else {
            return clazz.cast(getValue(key));
        }
    }

    /**
     * 主方法仅用于测试目的。
     */
    public static void main(String[] args) {
        // 直接在代码中指定环境
        init("dev"); // 你可以在这里切换环境,如 "test" 或 "prod"

        if (parameterTool != null) {
            parameterTool.toMap().forEach((key, value) -> System.out.println(key + "=" + value));
        }
    }
}

使用:

public class MyFlinkJob {

    public static void main(String[] args) throws Exception {
        // 在代码中直接指定环境
        ConfigManager.init("dev"); // 你可以在这里切换环境,如 "test" 或 "prod"

        // 加载配置后继续执行其他逻辑...
    }
}

获取配置:

String jobName = ConfigManager.getValue("flink.job.name");
int parallelism = ConfigManager.getValue("flink.parallelism", Integer.class);
String kafkaServers = ConfigManager.getValue("kafka.bootstrap.servers");
String kafkaTopic = ConfigManager.getValue("kafka.topic");

 

标签:String,配置文件,flink,getValue,ConfigManager,static,key,public
From: https://www.cnblogs.com/jiangbei/p/18624115

相关文章

  • Maven 构建配置文件
    构建配置文件是一系列的配置项的值,可以用来设置或者覆盖Maven构建默认值。使用构建配置文件,你可以为不同的环境,比如说生产环境(Production)和开发(Development)环境,定制构建方式。配置文件在pom.xml文件中使用activeProfiles或者profiles元素指定,并且可以通过各种方式触......
  • 【亲测有效】Flink1.20分布式集群搭建-最新版本
    一、Flink部署模式由于在一些企业应用场景中,对于集群资源分配和占用的方式,可能会有特定的需求,所以Flink为各种场景提供了不同的部署模式,主要包含以下三种模式。会话模式(SessionMode):如图所示,在会话模式中,会先启动一个Flink集群保持一个会话,然后通过客户端提交Flink作业。......
  • golang:第三方库:用vipper解析yaml配置文件
    一,安装第三方库$gogetgithub.com/spf13/viper二,代码1,配置文件Database:DBType:mysqlUserName:dbusernamePassword:dbpasswordHost:127.0.0.1:3306DBName:dbnameCharset:utf8ParseTime:TrueMaxIdleConns:10MaxOpenConns:30 2,代码:......
  • vue3.5.13 + vite6.0.1搭建前端项目的配置文件
    main.js//vue版本为3.5.13import{createApp}from'vue'import'./style.css'importAppfrom'./App.vue'import'element-plus/dist/index.css'importrouterfrom'./router/index'constapp=createApp(App)......
  • 「C/C++」C/C++ 之 用头文件作为程序的配置文件
    ✨博客主页何曾参静谧的博客(✅关注、......
  • Springboot logback 日志打印配置文件,每个日志文件100M,之后滚动到下一个日志文件,日
    全部配置logback.xml<?xmlversion="1.0"encoding="UTF-8"?><configurationdebug="false"><propertyname="LOG_HOME"value="log"/><propertyname="LOG_NAME"value="......
  • 分布式流处理Flink简答题
    1.复习Flink窗口类型:滑动窗口之类的滚动窗口、滑动窗口、会话窗口、全局窗口:2.Flink的时间操作类型:事件时间之类的处理时间、事件时间、摄入时间3.Flink的状态类型:算子状态等算子状态、键控状态、原始状态、托管状态4.复习Flink的运行模式:比如本地模式(local)、......
  • 错误信息:DedeCms错误警告:无法读取配置文件
    原因描述: 当您看到“无法读取配置文件”的错误提示时,通常是因为DedeCMS无法读取配置文件。这可能是由于以下几个原因:配置文件路径错误。配置文件被删除或移动。文件权限设置不正确。解决方案:检查配置文件路径:确认配置文件的路径是否正确。通常配置文件位于 /data/com......
  • 宝塔面板安装配置文件有错误,解决宝塔面板配置文件问题的方法
    当您在安装宝塔面板后发现配置文件有错误时,可以按照以下步骤进行排查和解决:检查配置文件:确保宝塔面板的配置文件(如/www/server/panel/data/config.json)没有语法错误。可以使用文本编辑器打开配置文件,逐行检查。恢复默认配置:如果配置文件损坏严重,可以尝试恢复默认配置。备份当前......
  • Linux环境下安装Flink的详细步骤
    一、系统环境准备操作系统要求Flink可以运行在多种操作系统上,如Linux、macOS和Windows。但在生产环境中,Linux是最常用的。确保你的Linux系统安装了必要的软件包,如JavaDevelopmentKit(JDK)。Flink1.11及以上版本要求JDK8或更高版本。可以通过命令java-version来检查系统是......