Spark的安装和初体验
电脑环境:
操作系统:win10
java:jdk1.8
python:python3.7
Hadoop:没装Hadoop(准备使用spark自带的集群计算模块,但是后面发现在win上使用还是需要下载hadoop避免一些编码上的错误)
下载地址:
这里选择了“spark-2.3.3-bin-hadoop2.7”版本的spark
————————————————————————————————————————
安装:直接解压
测试:
1.命令行进入spark文件夹的bin目录下,输入spark-shell进入scale shell。
结果:报错信息如下
ERROR Shell: Failed to locate the winutils binary in the hadoop binary path
java.io.IOException: Could not locate executable null\bin\winutils.exe in the Hadoop binaries.
错误原因:spark内置的Hadoop组件适用于linux系统,在win上使用的话需要重新编译
解决方法:
1:下载hadoop2.8.3(进入官网download选择release(其他版本)),并下载winutil(对应的hadoop版本的)。
2:配置hadoop的环境路径(HADOOP_HOME=“HADOOP所在目录” , path添加;%HADOOP_HOME%\bin;)
参考博客:
https://blog.csdn.net/songhaifengshuaige/article/details/79480491
再次测试:
1:测试scala-shell
(1)命令行进入spark的bin目录:输入spark-shell
(2)输入val lines = sc.textFile("file = ///D:/spark/spark-2.3.3-bin-hadoop2.7/README.md")
注:读取文件的路径如果不是绝对路径的话就会在bin目录下寻找文件,绝对路径必须在路几个前面加上file = /// ,且路径中的 \ 符号会被识别为转义符,必须全部改成 / 符号。
(3)输入 lines.count()
结果:103
(4)输入 linees.first()
结果:res8: String = # Apache Spark
2:测试pyspark
(1)命令行进入spark的bin目录:输入pyspark
(2)输入lines = sc.textFile("D:\spark\spark-2.3.3-bin-hadoop2.7\README.md")
//创建一个名伟lines的RDD(spark的基本单位)
(3)输入 lines.count()
输出:’# Apache Spark’
(4)输入 linees.first()
输出:103
spark核心概念简介:
每个spark应用都是由一个驱动器程序(driver program)来发起集群上的并行操作。驱动器程序包含应用的main函数,并且定义了集群上的分布式数据集,还对这些分布式数据集应用了相关操作。
spark启动时已经自动创建了一个SparkContext对象,是一个叫做sc的变量。一旦有了SparkContext,就可以用它来创建RDD。如用sc.textFile来创建一个代表文件中各行文本的RDD。
要执行这些操作,驱动器程序一般要管理多个执行器(excutor)节点。比如我们在集群上进行count()操作,那么不同节点会统计文件不同部分的行数。如果在本地模式下运行spark shell,所有工作都会在单个节点上进行。
初始化SparkContext:
可以现创建一个SparkConf对象来配置你的应用,然后基于这个SparkConf来创建一个SparkContext对象。多种语言如下
python版:
from pyspark import SparkConf , SparkContext
conf = SparkConf().setMaster("local").setAppName("My App")
sc = SparkContext(conf = conf)
然后在spark的bin目录下用spark-submit my_sript.py来运行python文件
scala版本
import org.apache.spark.SparkConf
import org.apache.spark.SparkContext
import org.apache.spark.SparkContext._
val conf = new SparkConf().setMaster("local").setAppName("My App")
val sc = new SparkContext(conf)
java版本
import org.apache.spark.SparkConf;
import org.apache.spark.api.java.JavaSparkContext;
SparkConf conf = new SparkConf().setMaster("local").setAppName("My App");
JavaSparkContext sc = new JavaSparkContext(conf);
这些例子展示了创建SparkContext的最基本方法,你只需要传递连个参数:
(1)集群url:告诉spark如何连接到集群上。这里使用了local,这个特殊值可以使spark运行在单机单线程上而无需连接到集群。
(2)应用名:在例子中我们使用了My App。当连接到集群时,这个值可以帮助你在集群管理器的用户界面中找到你的应用。