我使用的安装文件是 spark-3.0.0-bin-without-hadoop.tgz ,以下内容均以此版本进行说明。使用without 版本的安装包要进行 spark 和 hadoop 的关联配置【hadoo的版本是3.1.3】。
1.1 解压
我使用的是之前下载的安装包,也可以去官网下载,选择 Spark 版本【最新版本是3.1.2】和对应的 Hadoop 版本后再下载。
[root@tcloud spark]
[root@tcloud spark]
1.2 配置
配置环境变量的方法比较多,这里统一将环境变量放在 /tec/profile.d/my_env.sh 内。
[root@tcloud spark]
export SPARK_HOME=/usr/local/spark
export PATH=$PATH:$SPARK_HOME/bin
chmod +x /etc/profile.d/my_env.sh
source /etc/profile.d/my_env.sh
配置 ${SPARK_HOME}/conf/spark-env.sh 文件关联 spark-without-hadoop 和 hadoop【非without版本无需配置】
[root@tcloud conf]
[root@tcloud conf]
export SPARK_DIST_CLASSPATH=$(/usr/local/hadoop-3.1.3/bin/hadoop classpath)
1.3 Local模式
Local 模式是最简单的一种运行方式,它采用单节点多线程方式运行,适合日常测试开发使用。
[root@tcloud spark]
2021-07-30 14:55:56,588 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Setting default log level to "WARN".
To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).
Spark context Web UI available at http://tcloud:4040
Spark context available as 'sc' (master = local[*], app id = local-1627628171095).
Spark session available as 'spark'.
Welcome to
____ __
/ __/__ ___ _____/ /__
_\ \/ _ \/ _ `/ __/ '_/
/___/ .__/\_,_/_/ /_/\_\ version 3.0.0
/_/
Using Scala version 2.12.10 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_251)
Type in expressions to have them evaluated.
Type :help for more information.
scala>
- local:只启动一个工作线程;
- local[k]:启动 k 个工作线程;
- local[*]:启动跟 cpu 数目相同的工作线程数。
进入 spark-shell 后,程序已经自动创建好了上下文 SparkContext ,等效于执行了下面的 Scala 代码:
val conf = new SparkConf().setAppName("Spark shell").setMaster("local[*]")
val sc = new SparkContext(conf)
2.第一个spark案例
词频统计案例应该是大部分学习 spark 的同学测试的第一个案例,安准备一个词频统计的文件样本 word.txt ,内容如下:
hadoop,spark,hive
spark,hive,hbase,kafka
hadoop,hive,spark
在 scala 交互式命令行中执行如下 Scala 语句【就这么语句就能实现词频统计,Java开发能想象到吗 😃】:
sc.textFile("file:///home/spark/testFile/word.txt").flatMap(_.split(",")).map((_, 1)).reduceByKey(_ + _).saveAsTextFile("file:///home/spark/testFile/wordCount")
词频统计的结果:
[root@tcloud testFile]
(spark,3)
(hive,3)
(hadoop,2)
(kafka,1)
(hbase,1)
同时还可以通过 Web UI 查看作业的执行情况,访问端口为 4040 :
|