Spark基础

Spark基础

 

期待您的关注

☀小白的spark学习笔记 2024/6/3 08:30

 

目录

Spark基础

1.课程目标

2.Spark基于内存计算

3.Spark安装

1)下载spark文件

2)解压Spark 

3)修改配置文件 

5)修改启动命令

4.Spark工作原理

5.启动Spark

1)启动

2)Spark界面

6.第一个Spark程序

1)准备

2)第一个程序

3)练习

7.打包到集群上运行


 

 

1.课程目标

 

71c8e366e94c4a3ab793a5487e2209e1.png

 

2.Spark基于内存计算

 

Hadoop的MapReduce 

 

1.Mapper 产生KV对

2.Shuffle 洗牌 排序

3.Reduce 汇总

 

瓶颈:MapReduce 基于磁盘运算 速度较慢

 

4497beaa67ab4c2a8da3c84616c4f4cb.png

 

Spark 基于内存运算 速度快 易用 通用 兼容性好

 

058a44a330ed435d819d727333f5d171.png

 

3.Spark安装

 

1)下载spark文件

文件(可以私信获取)打开我们之前创建的虚拟机 将其添加进去

 

bf13854dac0043cb89454de7812a2354.png

 

2)解压Spark 

 

tar -zxvf spark-2.1.1-bin-hadoop2.7.tgz -C /usr/local/

cd /usr/local

mv spark-2.1.1-bin-hadoop2.7 spark


 

095b0f22cb154cf588d42d3f8e23f25f.png

8244090ddee644769aa60b2de4818b1a.png

 

3)修改配置文件 

 

cd /usr/local/spark/conf/

mv spark-env.sh.template spark-env.sh

vim spark-env.sh

添加

export JAVA_HOME=/usr/local/jdk
export SPARK_MASTER_IP=contos1
export SPARK_MASTER_PORT=7077

 

57a65501086f4dc99b17b1baca25990d.png

0f57aec1b9a648288db5b23a2340bdb9.png

 

 

 

mv slaves.template slaves

vim slaves

修改为 centos1

c0305b960fc24c94828e95684788c83a.png

 

5)配置环境变量

 

vim /etc/profile



export SPARK_HOME=/usr/local/spark
export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin


source /etc/profile

ce0fda976383465bbc9dc275914db538.png

 

5)修改启动命令

 

cd /usr/local/spark/sbin/

ll

mv start-all.sh start_all.sh
mv stop-all.sh stop_all.sh

 

eab6ab5f557e4844b55b1bbbf41be3c5.png

 

4.Spark工作原理

 

回顾一下Hadoop工作原理

 

e3449c42d5c74cb0aaa58975e929cb01.png

6d4ca8a346b442a3822f2dff27916a5d.png

 

Spark工作原理

 

8e429526964647d68a65eb37706466cf.png

609adf49f89049929a56270957766d6e.png

 

 

5.启动Spark

 

1)启动

 

start_all.sh

 

e1af92a6c516481997b2fbfc7ab4f5cc.png

 

2)Spark界面

 

192.168.67.90:8080

 

db2130976c1c410193a18d0c367f1bd4.png

 

6.第一个Spark程序

 

1)准备

 

maven:下载jar包的 根据groupId artifactId version就可以确定一个工程

 

首先 我们创建一个maven项目

 

ec32b8c313b24b7cb42d7d7c5c1809fb.png

d9be0902e89944439da5dff74198df61.png

 

然后 我们配置一下maven 让我们的IDEA知道它的存在

 

1af32b7cf1fa4d95b1963cf99ff15b7c.png

 

修改pom文件 将依赖复制进去 刷新一下

 

5f07f0f2f22e4928b7c7c110c333755d.png

 

注意:我们在重新加载依赖的时候可能部分依赖会出现错误 那么 我们可以去下载一下 就可以解决这个问题了

 

efbf4727ef1e4e0381994893841fc27d.png

 

2)第一个程序

 

import org.apache.spark.SparkConf
import org.apache.spark.rdd.RDD
import org.apache.spark.sql.SparkSession

object HelloWorld {
  def main(args: Array[String]): Unit = {
    val config=new SparkConf()
  //SparkSession.builder()是用来创建Spark上下文的 driver
  // local[*]表示在处理数据的时候 在本地以并行模式运行 Spark 应用程序 使用所有可用的 CPU 核心
    val spark=SparkSession.builder().master("local[*]").config(config).appName("hello").getOrCreate()
    val rddLine=spark.sparkContext.textFile("D:\\hello.txt") //读取数据
    val rddWord: RDD[String] = rddLine.flatMap(x => x.split(" "))
    val rddPair: RDD[(String, Int)] = rddWord.map(x => (x, 1))
    val value = rddPair.reduceByKey((x, y) => x + y) //优化
//    val rddList: RDD[(String, Iterable[Int])] = rddPair.groupByKey()
//    val value: RDD[(String, Int)] = rddList.map(x => (x._1, x._2.sum))
      value.foreach(x=>println(x))
  }
}

4e8fa2a69966467eb4626a6d79da166a.png

 

3)练习

 

求每个用户的总金额

 

import org.apache.spark.SparkConf
import org.apache.spark.rdd.RDD
import org.apache.spark.sql.SparkSession

object SalSum {
  def main(args: Array[String]): Unit = {
    val config=new SparkConf()

    val spark=SparkSession.builder().master("local[*]").config(config).appName("salSum").getOrCreate()
    val rddLine: RDD[String] = spark.sparkContext.textFile("D:\\sal.txt")
    val rddWord: RDD[(String, Int)] = rddLine.map(x => {
      val ord = x.split(",")
      (ord(0), ord(2).toInt) //类型转换
    })
    val value = rddWord.reduceByKey((x, y) => x + y)
    value.foreach(x=>println(x))
  }

}

 

64b7b15183974599987b5f896f2e0c75.png


注意:数据类型的转换

 

7.打包到集群上运行

 

首先 我们点击Build 并打包一下

 

ac359601877e458f89fc3d71e2a354f8.png

3d4906bdf14e45559100e534e651de88.png

7c5abd2838c844ee8c869f34e93a4e49.png

 

然后 我们把打好的jar包添加到/root/目录下 输入代码 创建一个文本 输入带豆点的文本内容

 

spark-submit --class SalSum --master spark://centos1:7077 --executor-memory 500M --total-executor-cores 2 jt_spark-1.0-SNAPSHOT-jar-with-dependencies.jar /root/words.txt

 

9a73711023af43a1ac13a75deeae4b00.png

 

8e09b6624ab34ca4a8e840a6d399d974.png

0a1235b947b24b2b9fa47bbbb173e7d7.png

 

可以看到结果

 

dd562fcb2f0f431a9ddbc21e47ae6fdc.png

 

 

 

  • 25
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值