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

server/2024/9/23 7:21:35/

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/server/120686.html

相关文章

【排序算法】插入排序_直接插入排序、希尔排序

文章目录 直接插入排序直接插入排序的基本思想直接插入排序的过程插入排序算法的C代码举例分析插入排序的复杂度分析插入排序的优点 希尔排序希尔排序&#xff08;Shell Sort&#xff09;详解希尔排序的步骤&#xff1a;希尔排序的过程示例&#xff1a;希尔排序的C语言实现举例…

7. 无线网络安全

7. 无线网络安全 (1) 无线网络面临的安全威胁 无线网络由于其开放性和无线传输的特性,面临着多种安全威胁,主要包括: 窃听:攻击者可以截获无线电信号并解析出数据,甚至在加密通信中收集加密信息用于以后的分析。 通信阻断:通过DoS攻击或其他干扰手段阻断通信,使设备间无…

【MySQL 02】库的增删查改及备份还原

目录 1.数据库的创建 创建数据库&#xff1a; 查看数据库列表 查看当前正在使用哪个数据库 使用指定的数据库 2.数据库的删除 3.字符集和校验规则 查看系统默认字符集及校验规则 改变数据库的字符集和校对规则 查看数据库支持的字符集和校验规则 4.修改数据库 查…

NLP 文本匹配任务核心梳理

定义 本质上是做了意图的识别 判断两个内容的含义&#xff08;包括相似、矛盾、支持度等&#xff09;侠义 给定一组文本&#xff0c;判断语义是否相似Yi 分值形式给出相似度 广义 给定一组文本&#xff0c;计算某种自定义的关联度Text Entailment 判断文本是否能支持或反驳这个…

展锐平台的手机camera 系统开发过程

展锐公司有自己的isp 图像处理引擎&#xff0c;从2012 年底就开始在智能手机上部署应用。最初的时候就几个人做一款isp的从hal 到kernel 驱动的完整软件系统&#xff0c;分工不是很明确&#xff0c;基本是谁擅长哪些就搞哪些&#xff0c;除了架构和编码实现之外&#xff0c;另外…

【devops】devops-gitlab之部署与日常使用

本站以分享各种运维经验和运维所需要的技能为主 《python零基础入门》&#xff1a;python零基础入门学习 《python运维脚本》&#xff1a; python运维脚本实践 《shell》&#xff1a;shell学习 《terraform》持续更新中&#xff1a;terraform_Aws学习零基础入门到最佳实战 《k8…

web基础—dvwa靶场(八)SQL Injection(Blind)

SQL Injection(Blind)&#xff08;SQL注入之盲注&#xff09; SQL Injection(Blind)&#xff0c;SQL盲注&#xff0c;相比于常规的SQL注入&#xff0c;他不会将返回具体的数据信息或语法信息&#xff0c;只会将服务器包装后的信息返回到页面中。 常规SQL注入与SQL盲注详细对比…

FreeRTOS保姆级教程(以STM32为例)—任务创建和任务控制API说明

目录 一、任务创建&#xff1a; &#xff08;1&#xff09;TaskHandle_t 任务句柄 &#xff08;2&#xff09; xTaskCreate&#xff1a; 函数原型&#xff1a; 参数说明&#xff1a; 返回值&#xff1a; 示例&#xff1a; 注意事项&#xff1a; 用法示例&#xff1a…