Spark IDEA 编程环境配置

2021-09-06 10:58:15 浏览数 (1)

文章目录

    • 1. 下载资料准备
    • 2. 建立项目、添加环境设置
    • 3. 第一个 Spark 程序

学自:Spark机器学习实战

https://book.douban.com/subject/35280412/

记录一下踩过的坑:

环境:win 10 java 1.8.0_281 Scala 2.11.11 Hadoop 2.7.7 Spark2.4.7

1. 下载资料准备

配套代码下载:https://www.epubit.com/bookDetails?id=UB72279bcfb49b8

下载 jar 包(注意版本2.11是scala的,2.4.7是spark的,根据你的版本改下面的下载链接就行)

https://repo1.maven.org/maven2/org/apache/spark/spark-streaming-flume-assembly_2.11/2.4.7/spark-streaming-flume-assembly_2.11-2.4.7.jar

https://repo1.maven.org/maven2/org/apache/spark/spark-streaming-kafka-0-10-assembly_2.11/2.4.7/spark-streaming-kafka-0-10-assembly_2.11-2.4.7.jar

jfreechart-1.0.19 下载,lib文件夹内有2个jar文件

放到下面路径,spark 安装路径下

2. 建立项目、添加环境设置

  • 创建文件夹路径,考入配套代码文件
代码语言:javascript复制
D:spark-2.4.7-bin-hadoop2.7examplessrcmainscalasparkmlcookbookchapter1

使用 idea 在 examples 文件夹下创建 maven 项目

设置 scala 文件夹为 Sources Root

设置 project structure

然后就可以 run 了,没有报错!

3. 第一个 Spark 程序

代码语言:javascript复制
// package 打包
package spark.ml.cookbook.chapter1

// 导入 SparkSession 上下文
import org.apache.spark.sql.SparkSession
import org.apache.log4j.Logger
import org.apache.log4j.Level // 减少输出内容

object MyFirstSpark20 {
    def main(args: Array[String]): Unit = {
        // 输出日志级别为 error,减少输出
        Logger.getLogger("org").setLevel(Level.ERROR)
        // 使用 Builder 模型,指定配置初始化 SparkSession,作为访问Spark集群的入口
        val spark = SparkSession
            .builder
            .master("local[*]")
            .appName("myFirstSpark20")
            .config("spark.sql.warehouse.dir", ".")
            .getOrCreate()
        // 以上为创建 SparkSession 的典型方法

        val x = Array(1.0,5.0,8.0,10.0,15.0,21.0,27.0,30.0,38.0,45.0,50.0,64.0)
        val y = Array(5.0,1.0,4.0,11.0,25.0,18.0,33.0,20.0,30.0,43.0,55.0,57.0)

        // 创建数组的 RDD
        val xRDD = spark.sparkContext.parallelize(x)
        val yRDD = spark.sparkContext.parallelize(y)

        // 创建新的 打包后的 rdd
        val zipedRDD = xRDD.zip(yRDD)
        zipedRDD.collect().foreach(println)
        // (1.0,5.0)
        // (5.0,1.0)
        // ...

        val xSum = zipedRDD.map(_._1).sum()
        val ySum = zipedRDD.map(_._2).sum()
        val xySum = zipedRDD.map(c => c._1 * c._2).sum()
        val n = zipedRDD.count()

        println("RDD X Sum: "  xSum) //314.0
        println("RDD Y Sum: "  ySum) //302.0
        println("RDD X*Y Sum: " xySum) // 11869.0
        println("Total count: " n) // 12
        spark.stop() // 退出程序,释放资源
    }
}

0 人点赞