spark读取外部配置文件之--files

本文介绍了一种在Spark程序中读取外部配置文件的方法,包括配置文件的创建、上传及程序中的读取过程,并提供了具体的代码示例。

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

在运行spark程序的时,有时需要读取外部配置参数,比如mysql的host参数、端口号、es主机ip、es端口号等。通过外部文件配置参数也方便程序迁移。下面就来看看如何来实现。

1、首先我们需要一个配置文件:
property.yml

es.nodes: 192.16.8.16

es.port: 9200
2、上传配置文件到某个节点:

3、然后需要在程序里加上如下代码:
Properties props = new Properties();
props.load(new FileInputStream("property.yml"));
String nodes = props.getProperty("es.nodes");
String port = props.getProperty("es.port");

4、通过 Maven打包程序:test.jar

5、上传 test.jar 到集群

6、执行 submit 命令

spark-submit --master yarn-cluster --class com. Test --files /home/lw/property.yml /home/lw/test.jar
--files 参数指定我们需要加载的外部配置文件


链接:spark读取外部配置文件

### 关于头歌实践教学平台中 Spark Streaming 和 Java 的相关内容 #### 头歌实践教学平台简介 头歌实践教学平台是一个专注于计算机科学教育的在线学习平台,提供多种技术方向的学习资源和实验环境。对于 Spark Streaming 和 Java 的结合使用,该平台通常会通过实际案例帮助学生理解如何利用 Java 编写 Spark Streaming 应用程序。 --- #### Spark Streaming 基本概念 Spark Streaming 是 Apache Spark 中用于处理实时数据流的一个模块。它能够接收来自不同源的数据(如 Kafka[^3]),并将这些数据划分为小批量进行分布式计算。以下是 Spark Streaming 使用 Java 进行开发的一些核心要点: 1. **创建 SparkStreamingContext** 需要初始化 `JavaStreamingContext` 对象来设置批处理时间间隔。 2. **输入数据源配置** 可以从各种数据源读取数据,例如 Kafka 或其他消息队列系统。 3. **DStream 操作** DStream 是 Spark Streaming 提供的核心抽象,表示连续不断的数据流。可以通过转换操作(如 map、filter)对其进行处理。 4. **输出结果** 将处理后的结果保存到外部存储或发送至下游系统。 --- #### 示例代码:基于 Java 的 Spark Streaming 程序 以下是一段简单的 Java 代码示例,展示如何使用 Spark Streaming 接收 Kafka 数据并进行基本统计分析。 ```java import org.apache.spark.SparkConf; import org.apache.spark.streaming.Durations; import org.apache.spark.streaming.api.java.JavaPairInputDStream; import org.apache.spark.streaming.api.java.JavaStreamingContext; import org.apache.kafka.clients.consumer.ConsumerRecord; import org.apache.spark.streaming.kafka010.KafkaUtils; import java.util.Arrays; import java.util.Collection; import java.util.HashMap; import java.util.Map; public class SparkStreamingExample { public static void main(String[] args) throws InterruptedException { // 初始化 Spark 配置 SparkConf conf = new SparkConf() .setAppName("JavaSparkKafkaWordCount") .setMaster("local[*]"); // 创建 Streaming Context 并设置批次时间为 2 秒 JavaStreamingContext jssc = new JavaStreamingContext(conf, Durations.seconds(2)); // 定义 Kafka 参数 Map<String, Object> kafkaParams = new HashMap<>(); kafkaParams.put("bootstrap.servers", "localhost:9092"); kafkaParams.put("key.deserializer", "org.apache.kafka.common.serialization.StringDeserializer"); kafkaParams.put("value.deserializer", "org.apache.kafka.common.serialization.StringDeserializer"); kafkaParams.put("group.id", "use_a_separate_group_id_for_each_stream"); kafkaParams.put("auto.offset.reset", "latest"); kafkaParams.put("enable.auto.commit", false); Collection<String> topics = Arrays.asList("test"); // 创建 Kafka 输入流 JavaPairInputDStream<String, String> messages = KafkaUtils.createDirectStream( jssc, LocationStrategies.PreferConsistent(), ConsumerStrategies.<String, String>Subscribe(topics, kafkaParams) ); // 统计单词数量 messages.mapToPair(record -> new Tuple2<>(record.value(), 1)) .reduceByKey((v1, v2) -> v1 + v2) .print(); // 启动 Streaming 上下文 jssc.start(); jssc.awaitTermination(); } } ``` 上述代码展示了如何连接 Kafka 主题,并对每条记录的内容按单词频率进行统计。 --- #### JSON 文件处理与 Spark SQL 结合 如果需要进一步扩展功能,比如加载 JSON 格式的日志文件并与 Spark SQL 联合使用,则可以参考如下方式[^4]: ```java // 加载 JSON 数据作为 DataFrame Dataset<Row> jsonDF = spark.read().json("/path/to/json/files/*.json"); // 注册临时表以便查询 jsonDF.createOrReplaceTempView("logs"); // 执行 SQL 查询 Dataset<Row> results = spark.sql("SELECT * FROM logs WHERE timestamp > '2023-01-01'"); results.show(); ``` 此部分适用于场景化需求,例如广告点击率分析或影评情感挖掘等项目[^5]。 --- #### 学习建议 为了更高效地掌握 Spark Streaming 和 Java 开发技能,推荐以下途径: - 利用在线学习平台上的免费课程,例如 Coursera 和 Udemy 提供的相关专题[^2]。 - 在头歌平台上完成配套练习任务,逐步熟悉 API 的调用逻辑。 - 查阅官方文档获取最新版本的功能说明和支持材料。 ---
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

野老杂谈

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值