【用IDEA基于Scala2.12.18开发Spark 3.4.1 项目】

使用IDEA创建Spark项目

打开IDEA后选址新建项目

选址sbt选项
在这里插入图片描述

配置JDK
在这里插入图片描述
在这里插入图片描述

debug

解决方案
在这里插入图片描述
在这里插入图片描述

相关的依赖下载出问题多的话,可以关闭idea,重启再等等即可。

设置sbt依赖

  • 将sbt源设置为国内源
  • 基于sbt添加依赖
    • spark-sql
    • spark-core
ThisBuild / version := "0.1.0-SNAPSHOT"

ThisBuild / scalaVersion := "2.12.18"

lazy val root = (project in file("."))
  .settings(
    name := "Spark341Learning",
    idePackagePrefix := Some("cn.lh.spark341"),
    resolvers += "HUAWEI" at "https://mirrors.huaweicloud.com/repository/maven",
    updateOptions := updateOptions.value.withCachedResolution(true),
    libraryDependencies += "org.apache.spark" %% "spark-core" % "3.4.1",
    libraryDependencies += "org.apache.spark" %% "spark-sql" % "3.4.1"
  )

创建Spark 项目结构

在这里插入图片描述

新建Scala代码

Spark sql simleapp代码如下:

package cn.lh.spark341
package SQL

import org.apache.spark.sql.SparkSession

object SimpleApp {

  def main(args: Array[String]): Unit = {
    //    Spark开发三部曲
    //    step 1: 准备Spark会话 spark sql 会话
    val spark = SparkSession.builder.appName("SimpeApp").master("local[2]").getOrCreate()
    //    step 2:Spark处理逻辑
    val logF = "D:\\Programs\\spark-3.4.1-bin-hadoop3\\README.md"
    val logD = spark.read.textFile(logF).cache()
    val numA = logD.filter(line => line.contains("a")).count()
    val numB = logD.filter(line => line.contains("b")).count()
    println(s"Lines with a: $numA, Lines with b: $numB")
    //    step 3: 关闭Spark会话
    spark.stop()
  }

}

在这里插入图片描述

Spark RDD代码如下:

package cn.lh.spark341
package RDD

import org.apache.spark.{SparkConf, SparkContext}

object RDDtest1 {

  def main(args:Array[String]): Unit ={
//    Spark RDD开发三部曲
//    step1: 创建SparkContext对象
    val conf = new SparkConf().setAppName("RDDtest1").setMaster("local[2]")
    val sc = new SparkContext(conf)
//    step2: Spark处理逻辑代码
    val data = Array(1,2,3,4,5)
    val distData = sc.parallelize(data)
    val i: Int = distData.reduce((a, b) => a + b)
//    step3:关闭SparkContext对象
    println(i)
    sc.stop()
  }

}

在这里插入图片描述

到此,基于Scala2.12.18开发Spark 3.4.1 项目完成。

### 如何在 Scala 项目中通过构建工具添加 Spark 依赖 #### 使用 sbt 添加 Spark 依赖 在 sbt 构建工具中,可以通过修改 `build.sbt` 文件来添加 Spark 的依赖项。以下是具体方法: 1. **定义基本项目信息** 需要在 `build.sbt` 中指定项目的名称、版本以及使用的 Scala 版本。例如: ```sbt name := "Simple Project" version := "1.0" scalaVersion := "2.12.18" // 注意选择与 Spark 兼容的 Scala 版本[^3] ``` 2. **添加 Spark 依赖** 在 `libraryDependencies` 中添加 Spark 的核心库或其他所需模块。以下是一个典型的配置示例: ```sbt libraryDependencies += "org.apache.spark" %% "spark-core" % "3.4.1" // 替换为所需的 Spark 版本号[^4] // 如果需要其他模块,可以继续添加 libraryDependencies += "org.apache.spark" %% "spark-sql" % "3.4.1" ``` 这里需要注意的是,`%%` 符号会自动匹配当前项目Scala 版本并下载对应的 Spark 库。 3. **保存文件并刷新项目** 修改完成后,保存 `build.sbt` 并让 IDE 自动加载新的依赖项。如果使用 IntelliJ IDEA,则可以在右上角点击提示框中的 “Reload” 按钮完成更新[^1]。 --- #### 使用 Maven 添加 Spark 依赖 对于使用 Maven 的项目,需在 `pom.xml` 文件中声明 Spark 依赖。以下是具体的 XML 配置片段: ```xml <dependencies> <!-- Spark Core --> <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-core_2.12</artifactId> <!-- _2.12 表明兼容 Scala 2.12 --> <version>3.4.1</version> </dependency> <!-- 可选:Spark SQL --> <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-sql_2.12</artifactId> <version>3.4.1</version> </dependency> </dependencies> ``` 同样需要注意保持 SparkScala 版本之间的兼容性。 --- #### 示例代码验证 假设已经成功添加了 Spark 依赖,下面是一段简单的测试代码用于验证环境设置是否正常工作: ```scala package Test import org.apache.spark.{SparkConf, SparkContext} object WordCount { def main(args: Array[String]): Unit = { val conf = new SparkConf() .setAppName("Word Count Example") .setMaster("local[*]") // 设置本地运行模式 val sc = new SparkContext(conf) try { val data = Seq("apple", "banana", "orange", "apple", "banana") val rdd = sc.parallelize(data) val wordCounts = rdd.map(word => (word, 1)).reduceByKey(_ + _) wordCounts.collect.foreach(println) } finally { sc.stop() // 关闭 Spark Context } } } ``` 上述代码展示了如何初始化 Spark 上下文,并执行一个基础的任务——统计单词频率。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值