深入浅出:Eclipse 中配置 Maven 与 Spark 应用开发全指南

ops/2024/9/23 8:21:05/

Spark

  1. 安装配置

1.在 Eclipse 中配置 Maven

        Eclipse 中默认自带 Maven 插件,但是自带的 Maven 插件不能修改本地仓库,所

以通常我们不使用自带的 Maven ,而是使用自己安装的,在 Eclipse 中配置 Maven 的

步骤如下:

1) 点击 Eclipse 中的 Window → Preferences

2) 点开 Maven 前面的箭头,选择 Installations,点击 Add…

3) 点击 Directory…选择我们安装的 Maven 核心程序的根目录,然后点击 Finish

4) 勾上添加的 Maven 核心程序

5) 选择 Maven 下的 User Settings ,在全局设置哪儿点击 Browse… 选择 Maven

核心程序的配置文件 settings.xml ,本地仓库会自动变为我们在 settings.xml

文件中设置的路径

修改setting内容:

<profile><id>jdk-1.8</id><activation><activeByDefault>true</activeByDefault><jdk>1.8</jdk></activation><properties><maven.compiler.source>1.8</maven.compiler.source><maven.compiler.target>1.8</maven.compiler.target><maven.compiler.compilerversion>1.8</maven.compiler.compilerversion></properties></profile>

2. 在 Eclipse 中创建 Maven 项目

2.1 创建 Java 工程

1) 点击 File → New → Maven Project ,弹出如下窗口

2) 点击 Next,配置坐标(GAV)及打包方式,然后点击 Finish

group id:组织id

artifact id:项目名字

version:版本

package:java包名

3) 创建成功后, 配置 Maven 的核心配置文件 pom.xml 文件

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>me.spark.app</groupId><artifactId>playersStats</artifactId><version>1.0</version><name>playersStats</name><!-- FIXME change it to the project's website --><url>http://www.example.com</url><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><maven.compiler.source>1.8</maven.compiler.source><maven.compiler.target>1.8</maven.compiler.target></properties><dependencies><!-- https://mvnrepository.com/artifact/org.apache.maven.plugins/maven-assembly-plugin --><dependency><groupId>org.apache.maven.plugins</groupId><artifactId>maven-assembly-plugin</artifactId><version>3.3.0</version></dependency><!-- https://mvnrepository.com/artifact/org.apache.spark/spark-core --><dependency><groupId>org.apache.spark</groupId><artifactId>spark-core_2.12</artifactId><version>3.0.0</version></dependency><!-- https://mvnrepository.com/artifact/org.apache.spark/spark-sql --><dependency><groupId>org.apache.spark</groupId><artifactId>spark-sql_2.12</artifactId><version>3.0.0</version></dependency></dependencies><build><plugins><plugin><artifactId>maven-assembly-plugin</artifactId><version>3.3.0</version><configuration><descriptorRefs><descriptorRef>jar-with-dependencies</descriptorRef></descriptorRefs><archive><manifest><mainClass>me.spark.app.playersStats.Main</mainClass></manifest></archive></configuration><executions><execution><id>make-assembly</id> <!-- this is used for inheritance merges --><phase>package</phase> <!-- bind to the packaging phase --><goals><goal>single</goal></goals></execution></executions></plugin></plugins></build></project>

  1. 模板

1. Spark 应用基本模板

这是 Spark 应用程序的基本结构,适用于所有 Spark 程序的起点。

import org.apache.spark.sql.SparkSession;public class MySparkApp {public static void main(String[] args) {// 创建 SparkSession,应用程序入口SparkSession spark = SparkSession.builder().appName("MySparkApp").master("local")  // 本地模式.getOrCreate();// 你的 Spark 代码在这里编写// 关闭 SparkSessionspark.stop();}}

2. DataFrame 操作模板

DataFrame 是 Spark 进行结构化数据处理的核心 API,特别适合处理 CSV、JSON、Parquet 等格式的文件。以下是通过 DataFrame 进行数据处理的模板。

import org.apache.spark.sql.Dataset;import org.apache.spark.sql.Row;import org.apache.spark.sql.SparkSession;import static org.apache.spark.sql.functions.*;public class MyDataFrameApp {public static void main(String[] args) {// 创建 SparkSessionSparkSession spark = SparkSession.builder().appName("DataFrameExample").master("local").getOrCreate();// 读取 CSV 文件为 DataFrameDataset<Row> df = spark.read().option("header", "true") // 是否包含头部.option("inferSchema", "true") // 自动推断列类型.csv("path/to/your/csvfile.csv");// 打印 DataFrame 的结构df.printSchema();// 显示前20行数据df.show();// 数据处理:计算某列的平均值df.groupBy("column_name").agg(avg("another_column").alias("average_value")).show();// 关闭 SparkSessionspark.stop();}}

3. RDD 操作模板

RDD(Resilient Distributed Dataset)是 Spark 的底层 API,适合处理非结构化数据,特别是在数据量较大时。以下是通过 RDD 进行数据处理的模板。

import org.apache.spark.api.java.JavaRDD;import org.apache.spark.api.java.JavaSparkContext;import org.apache.spark.SparkConf;public class MyRDDApp {public static void main(String[] args) {// 配置 SparkSparkConf conf = new SparkConf().setAppName("RDDExample").setMaster("local");JavaSparkContext sc = new JavaSparkContext(conf);// 读取文本文件为 RDDJavaRDD<String> lines = sc.textFile("path/to/your/file.txt");// 简单的 WordCount 示例JavaRDD<String> words = lines.flatMap(line -> Arrays.asList(line.split(" ")).iterator());JavaRDD<Tuple2<String, Integer>> wordCounts = words.mapToPair(word -> new Tuple2<>(word, 1)).reduceByKey((a, b) -> a + b);// 打印结果wordCounts.collect().forEach(System.out::println);// 关闭 SparkContextsc.close();}}

4. Spark SQL 模板

Spark SQL 允许你使用 SQL 查询来处理结构化数据。以下是 Spark SQL 的使用模板,适合数据分析任务。

import org.apache.spark.sql.Dataset;import org.apache.spark.sql.Row;import org.apache.spark.sql.SparkSession;public class MySQLApp {public static void main(String[] args) {// 创建 SparkSessionSparkSession spark = SparkSession.builder().appName("SQLExample").master("local").getOrCreate();// 读取 CSV 文件为 DataFrameDataset<Row> df = spark.read().option("header", "true").option("inferSchema", "true").csv("path/to/your/csvfile.csv");// 注册临时表df.createOrReplaceTempView("my_table");// 使用 SQL 查询数据Dataset<Row> result = spark.sql("SELECT column_name, COUNT(*) FROM my_table GROUP BY column_name");// 显示查询结果result.show();// 关闭 SparkSessionspark.stop();}}

5. 数据读取与写入模板

Spark 支持多种数据源的读取和写入,如 CSV、JSON、Parquet、JDBC 等。以下是常见的读取和写入数据的操作模板。

读取 CSV 数据
Dataset<Row> df = spark.read().option("header", "true").option("inferSchema", "true").csv("path/to/csvfile.csv");
读取 JSON 数据
Dataset<Row> df = spark.read().json("path/to/jsonfile.json");
读取 Parquet 数据
Dataset<Row> df = spark.read().parquet("path/to/parquetfile.parquet");
写入数据到 CSV 文件
df.write().option("header", "true").csv("path/to/output_csv/");
写入数据到 Parquet 文件
df.write().parquet("path/to/output_parquet/");

6. Spark Streaming 模板

Spark Streaming 处理实时流数据。以下是通过 Spark Streaming 进行数据处理的模板。

import org.apache.spark.SparkConf;import org.apache.spark.streaming.Durations;import org.apache.spark.streaming.api.java.JavaStreamingContext;public class MyStreamingApp {public static void main(String[] args) throws InterruptedException {// 配置 Spark StreamingSparkConf conf = new SparkConf().setAppName("StreamingExample").setMaster("local[2]");JavaStreamingContext streamingContext = new JavaStreamingContext(conf, Durations.seconds(1));// 监听 socket 数据源JavaReceiverInputDStream<String> lines = streamingContext.socketTextStream("localhost", 9999);// 处理数据:简单的 WordCountJavaDStream<String> words = lines.flatMap(line -> Arrays.asList(line.split(" ")).iterator());JavaPairDStream<String, Integer> wordCounts = words.mapToPair(word -> new Tuple2<>(word, 1)).reduceByKey((a, b) -> a + b);// 输出结果wordCounts.print();// 启动流处理streamingContext.start();streamingContext.awaitTermination();}}


http://www.ppmy.cn/ops/114672.html

相关文章

软件测试技术之 GPU 单元测试是什么!

1 背景 测试是开发的一个非常重要的方面&#xff0c;可以在很大程度上决定一个应用程序的命运。良好的测试可以在早期捕获导致应用程序崩溃的问题&#xff0c;但较差的测试往往总是导致故障和停机。 单元测试用于测试各个代码组件&#xff0c;并确保代码按照预期的方式工作。单…

机器学习查漏补缺(3)

[E] Why does an ML model’s performance degrade in production? There are several reasons why a machine learning models performance might degrade in production: Data drift: The distribution of the input data changes over time (e.g., customer behavior, ma…

SQL 语法学习指南

目录 SQL 语法学习指南1. SQL 基本概念1.1 什么是 SQL&#xff1f;1.2 常见的数据库管理系统&#xff08;DBMS&#xff09; 2. SQL 基础语法2.1 SELECT 查询2.2 插入数据&#xff1a;INSERT INTO2.3 更新数据&#xff1a;UPDATE2.4 删除数据&#xff1a;DELETE 3. SQL 进阶语法…

Pandas 数据分析入门详解

今日内容大纲介绍 DataFrame读写文件 DataFrame加载部分数据 DataFrame分组聚合计算 DataFrame常用排序方式 1.DataFrame-保存数据到文件 格式 df对象.to_数据格式(路径) ​ # 例如: df.to_csv(data/abc.csv) 代码演示 如要保存的对象是计算的中间结果&#xff0c;或者以…

【高等代数笔记】线性空间(五-九)

3. 线性空间 主线任务&#xff1a;研究线性空间和它的子空间的结构 研究平面 π \pi π上向量共线与不共线的问题&#xff1a; c ⃗ \vec{c} c 与 a ⃗ ≠ 0 \vec{a}\ne\boldsymbol{0} a 0共线 c ⃗ λ a ⃗ ⇔ λ ∈ R ⇔ − λ a ⃗ 1 c ⃗ 0 ⃗ \vec{c}\lambda\vec{…

uniapp map设置高度为100%后,会拉伸父容器的高度

推荐学习文档 golang应用级os框架&#xff0c;欢迎stargolang应用级os框架使用案例&#xff0c;欢迎star案例&#xff1a;基于golang开发的一款超有个性的旅游计划app经历golang实战大纲golang优秀开发常用开源库汇总想学习更多golang知识&#xff0c;这里有免费的golang学习笔…

第十二周:机器学习

目录 摘要 Abstract 一、非监督学习 二、word embedding 三、transformer 1、应用 2、encoder 3、decoder 四、各类attention 1、最常见的类别 2、其余种类 3、小结 总结 摘要 本周继续学习机器学习的相关课程&#xff0c;首先了解了监督学习和非监督学习的概…

前后端数据加密与解密

前端js加密,后端java数据解密 使用CryptoJS进行加密 CryptoJS是一个JavaScript库&#xff0c;支持多种加密算法&#xff0c;包括AES。下面是使用CryptoJS进行加密的一个例子。 首先&#xff0c;你需要引入CryptoJS库。可以通过CDN或者安装到项目中来使用&#xff1a; <s…