spark加载properties配置文件方法

本文纠正了Spark加载properties配置文件的常见错误,并详细介绍了正确的实现步骤,帮助读者掌握有效的配置文件读取方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先我先介绍一下错误的写法,这个加载配置文件方法是错误的:

    val props = new Properties();
    val loader = getClass.getClassLoader;
    props.load(new FileInputStream(loader.getResource("config.properties").getFile()))
这个是把配置文件直接放在resource的目录下,去获得配置文件信息,这个写法在spark程序中会报找不到配置文件。

正确写法:

    val props = new Properties();

    props.load(new FileInputStream("config.properties"));
    val hdfspath = props.getProperty("hdfspath");
    val mysqlpath = props.getProperty("mysql");

你可以在这些地方加载配置文件

1.

 kafkaStream.foreachRDD { rdd =>
            rdd.foreachPartition { partition =>

                val filePath = "config.properties"
                LogUtil.info(filePath)
                val props = new Properties()
                props.load(new FileInputStream(filePath))

                LogUtil.info("一")
                props.keySet().toArray().foreac
### Spark 配置文件示例与参数说明 Spark 的配置可以通过多种方式进行设置,包括通过命令行参数、代码中显式设置以及使用外部配置文件。以下是一个典型的 Spark 配置文件示例及其参数说明。 #### 1. 配置文件示例 以下是 `spark-defaults.conf` 文件的示例内容: ```properties # 设置 Spark 应用程序的默认名称 spark.app.name=MySparkApp # 设置驱动程序内存大小 spark.driver.memory=4g # 设置每个执行器的内存大小 spark.executor.memory=2g # 设置每个执行器的核心数 spark.executor.cores=1 # 设置应用运行在 YARN 上,并以集群模式部署 spark.master=yarn spark.submit.deployMode=cluster # 设置日志级别 spark.log.level=WARN # 设置 Shuffle 分区数 spark.sql.shuffle.partitions=200 # 启用动态分配 spark.dynamicAllocation.enabled=true # 动态分配初始执行器数量 spark.dynamicAllocation.initialExecutors=2 # 动态分配最小执行器数量 spark.dynamicAllocation.minExecutors=1 # 动态分配最大执行器数量 spark.dynamicAllocation.maxExecutors=10 # Hive 支持相关配置 spark.hadoop.hive.exec.dynamic.partition=true spark.hadoop.hive.exec.dynamic.partition.mode=nonstrict ``` #### 2. 参数说明 - **`spark.app.name`**: 指定 Spark 应用程序的名称[^1]。 - **`spark.driver.memory`**: 驱动程序所需的内存量,单位为 GB 或 MB[^2]。 - **`spark.executor.memory`**: 每个执行器所需的内存量,单位为 GB 或 MB[^2]。 - **`spark.executor.cores`**: 每个执行器可用的核心数[^1]。 - **`spark.master`**: 指定 Spark 应用程序运行的主节点类型(如 `local`、`yarn`、`mesos` 等)。 - **`spark.submit.deployMode`**: 指定部署模式(`client` 或 `cluster`)。 - **`spark.log.level`**: 设置日志级别,常见的值有 `INFO`、`WARN` 和 `ERROR`[^3]。 - **`spark.sql.shuffle.partitions`**: 设置 Shuffle 操作后的分区数,默认值为 200。 - **`spark.dynamicAllocation.enabled`**: 是否启用动态资源分配[^2]。 - **`spark.dynamicAllocation.initialExecutors`**: 动态分配时的初始执行器数量[^2]。 - **`spark.dynamicAllocation.minExecutors`**: 动态分配时的最小执行器数量。 - **`spark.dynamicAllocation.maxExecutors`**: 动态分配时的最大执行器数量。 - **`spark.hadoop.hive.exec.dynamic.partition`**: 启用 Hive 动态分区[^4]。 - **`spark.hadoop.hive.exec.dynamic.partition.mode`**: 设置 Hive 动态分区模式为非严格模式。 #### 3. 使用自定义配置文件 如果需要在代码中加载自定义配置文件,可以参考以下代码示例: ```scala object CustomConfigExample { def main(args: Array[String]): Unit = { // 创建 SparkSession 并加载自定义配置文件 val spark = SparkSession.builder() .appName("CustomConfigExample") .config("spark.sql.shuffle.partitions", "500") // 示例:设置 Shuffle 分区数 .config("spark.hadoop.hive.exec.dynamic.partition", "true") // 启用 Hive 动态分区 .enableHiveSupport() .getOrCreate() // 加载自定义配置文件 val configPath = args(0) // 假设第一个参数是配置文件路径 val config = spark.sparkContext.textFile(configPath).collect().mkString("\n") // 打印加载的配置内容 println(s"Loaded configuration:\n$config") // 示例操作:读取 Hive 表数据 val df = spark.sql("SELECT * FROM my_hive_table") df.show() // 停止 SparkSession spark.stop() } } ``` 上述代码展示了如何在 Spark加载自定义配置文件并结合 Hive 支持进行操作[^4]。 ---
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值