【Spark笔记】Windows10 本地搭建单机版Spark开发环境
0x00 环境及软件
1、系统环境
OS:Windows10_x64 专业版
2、所需软件或工具
- JDK1.8.0_131
- spark-2.3.0-bin-hadoop2.7.tgz
- hadoop-2.8.3.tar.gz
- scala-2.11.8.zip
- hadoop-common-2.2.0-bin-master.zip(主要使用里面的winutils.exe)
- IntelliJ IDEA(版本:2017.1.2 Build #IU-171.4249.32,built on April 21,2017)
- scala-intellij-bin-2017.1.20.zip(IntelliJ IDEA scala插件)
- apache-maven-3.5.0
0x01 搭建步骤
1、安装JDK
从http://www.oracle.com/technetwork/java/javase/downloads/index.html处下载相应版本的JDK安装文件,安装教程不再赘述,最终安装后的路径如下(由于之前就安装过JDK了,所以此处显示时间为2017年的):
在环境变量中配置JDK信息,新建变量JAVA_HOME=C:\SelfFiles\Install\Java\jdk1.8.0_131,并在Path中添加JDK信息%JAVA_HOME%\bin,如下:
然后,打开一个命令行界面,验证JDK是否正确安装,如下:
说明JDK已经正常安装。
2、安装Scala
从https://www.scala-lang.org/download/all.html 处下载scala-2.11.8,然后解压并存放在本地电脑C:\SelfFiles\Install\scala-2.11.8处,然后配置环境变量并添加到Path变量中(%SCALA_HOME%\bin),类似于JDK的环境变量配置,如下:
然后,打开一个命令行界面验证是否安装成功,如下:
说明安装成功。
3、安装Hadoop
在http://hadoop.apache.org/releases.html下载hadoop-2.8.3,其实下一步“安装Spark”中我们选择下载的Spark版本为spark-2.3.0-bin-hadoop2.7,该版本Spark要求对应的Hadoop要在2.7及以上版本,所以此处我们选择Hadoop-2.8.3,选择其他更高的版本也是可以的。然后解压并存放在C:\SelfFiles\Spark\hadoop-2.8.3,并添加环境变量并添加到Path变量中(%HADOOP_HOME%和%HADOOP_HOME%\bin):
4、安装Spark
在http://spark.apache.org/downloads.html下载对应版本的Spark,此处我们下载的Spark版本信息如下:
下载到本地之后解压,并存放在目录C:\SelfFiles\Spark\spark-2.3.0-bin-hadoop2.7,然后添加环境变量和Path变量中(%SPARK_HOME%和%SPARK_HOME%\bin):
到此,单机版的Spark环境应该安装好了,此时我们在命令行界面中运行spark-shell来验证是否成功:
虽然最终进入到了spark shell中,但是中间报了一个错误,提示找不到C:\SelfFiles\Spark\hadoop-2.8.3\bin\winutils.exe文件,通过查看发现确实不存在该文件,此时我们需要从https://github.com/srccodes/hadoop-common-2.2.0-bin/tree/master/bin此处下载winutils.exe文件,并保存到本地C:\SelfFiles\Spark\hadoop-2.8.3\bin\目录下。然后再次运行spark-shell,结果如下:
可以发现,已经不再报找不到winutils.exe文件的错误了,至于提示“WARN NativeCodeLoader:62 - Unable to load native-hadoop library for your platform...”的错误,尝试了网上大多数的方法,都未解决,此处暂时未解决。
至此,Spark的环境算是基本搭建完成了。下面就开始搭建使用Scala的开发环境。
5、安装IDEA及scala插件
至于IDEA的下载和安装,此处不再赘述,读者可以去https://www.jetbrains.com/自行下载并安装。此处主要记录下scala插件的安装,IDEA的插件安装支持在线安装和离线安装,我们此处采用的是离线安装,即手动下载将要安装的scala插件,然后在IDEA中加载安装。
首先,我们从JetBrains官网上的插件库(http://plugins.jetbrains.com/)搜索scala插件,如下所示:
然后,点击第一个Scala进入下载界面,如下:
上面列举了兼容不同IDEA构建版本的scala插件,所以此处我们应该选择兼容自己所用IDEA版本的scala插件。从从前面的0x00一节知道,我这里使用的IDEA版本为2017.1.2 Build #IU-171.4249.32,built on April 21,2017,所以此时我们应该选择COMPATIBLE BUILDS一列的值范围包括171.4249.32的版本,可选择的比较多,我们随便选择一个下载即可,然后保存到本地的某个路径下,最好是保存在IDEA安装目录里的plugins目录下,我的保存路径为:C:\SelfFiles\Install\IntelliJIDEA\plugins\Scala\scala-intellij-bin-2017.1.20.zip。
接着,打开IDEA,选择File-->Settings...,可见如下界面:
然后单击右下角的“Install plugin from disk...”,选择刚刚我们保存的scala插件文件即可,安装成功后重启IDEA即可使用。
其实,如果网络比较好的话,使用在线安装更方便,此处也提一下在线安装的方法:在上面界面中,点击“Install JetBrains plugin...”或“Browse repositories...”,出现以下界面:
在上述界面搜索框中输入scala即可找到scala插件,然后点击右侧的“Install”安装即可。然后,我们可以通过新建项目来验证scala插件是否安装成功,如下:
6、配置maven
maven的下载和配置网络上面已经有很多教程,此处不再赘述。
7、编写测试代码
下面我们就是用IDEA来编写一个使用Spark进行数据处理的简单示例,该例子来自https://my.oschina.net/orrin/blog/1812035,并根据自己项目的名称做轻微修改,创建maven工程,项目结构如下所示:
pom.xml文件内容:
1 <?xml version="1.0" encoding="UTF-8"?> 2 <project xmlns="http://maven.apache.org/POM/4.0.0" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 5 <modelVersion>4.0.0</modelVersion> 6 7 <groupId>com.hackhan.demo</groupId> 8 <artifactId>jacklee</artifactId> 9 <version>1.0-SNAPSHOT</version> 10 11 12 <properties> 13 <spark.version>2.3.0</spark.version> 14 <scala.version>2.11</scala.version> 15 </properties> 16 17 <dependencies> 18 <dependency> 19 <groupId>org.apache.spark</groupId> 20 <artifactId>spark-core_${scala.version}</artifactId> 21 <version>${spark.version}</version> 22 </dependency> 23 <dependency> 24 <groupId>org.apache.spark</groupId> 25 <artifactId>spark-streaming_${scala.version}</artifactId> 26 <version>${spark.version}</version> 27 </dependency> 28 29 <dependency> 30 <groupId>org.apache.spark</groupId> 31 <artifactId>spark-sql_${scala.version}</artifactId> 32 <version>${spark.version}</version> 33 </dependency> 34 <dependency> 35 <groupId>org.apache.spark</groupId> 36 <artifactId>spark-hive_${scala.version}</artifactId> 37 <version>${spark.version}</version> 38 </dependency> 39 <dependency> 40 <groupId>org.apache.spark</groupId> 41 <artifactId>spark-mllib_${scala.version}</artifactId> 42 <version>${spark.version}</version> 43 </dependency> 44 45 </dependencies> 46 47 <build> 48 <plugins> 49 50 <plugin> 51 <groupId>org.scala-tools</groupId> 52 <artifactId>maven-scala-plugin</artifactId> 53 <version>2.15.2</version> 54 <executions> 55 <execution> 56 <goals> 57 <goal>compile</goal> 58 <goal>testCompile</goal> 59 </goals> 60 </execution> 61 </executions> 62 </plugin> 63 64 <plugin> 65 <groupId>org.apache.maven.plugins</groupId> 66 <artifactId>maven-compiler-plugin</artifactId> 67 <version>3.6.0</version> 68 <configuration> 69 <source>1.8</source> 70 <target>1.8</target> 71 </configuration> 72 </plugin> 73 74 <plugin> 75 <groupId>org.apache.maven.plugins</groupId> 76 <artifactId>maven-surefire-plugin</artifactId> 77 <version>2.19</version> 78 <configuration> 79 <skip>true</skip> 80 </configuration> 81 </plugin> 82 83 </plugins> 84 </build> 85 86 </project>
WordCount.scala文件内容如下:
1 package com.hackhan.demo 2 3 import org.apache.spark.{SparkConf, SparkContext} 4 5 6 /** 7 * 8 * @author migu-orrin on 2018/5/3. 9 */ 10 object WordCount { 11 def main(args: Array[String]) { 12 13 /** 14 * SparkContext 的初始化需要一个SparkConf对象 15 * SparkConf包含了Spark集群的配置的各种参数 16 */ 17 val conf=new SparkConf() 18 .setMaster("local")//启动本地化计算 19 .setAppName("WordCount")//设置本程序名称 20 21 //Spark程序的编写都是从SparkContext开始的 22 val sc=new SparkContext(conf) 23 //以上的语句等价与val sc=new SparkContext("local","testRdd") 24 val data=sc.textFile("C:/SelfFiles/Spark/test/wordcount.txt")//读取本地文件 25 var result = data.flatMap(_.split(" "))//下划线是占位符,flatMap是对行操作的方法,对读入的数据进行分割 26 .map((_,1))//将每一项转换为key-value,数据是key,value是1 27 .reduceByKey(_+_)//将具有相同key的项相加合并成一个 28 29 result.collect()//将分布式的RDD返回一个单机的scala array,在这个数组上运用scala的函数操作,并返回结果到驱动程序 30 .foreach(println)//循环打印 31 32 Thread.sleep(10000) 33 result.saveAsTextFile("C:/SelfFiles/Spark/test/wordcountres") 34 println("OK,over!") 35 } 36 }
其中处理的目标文件C:/SelfFiles/Spark/test/wordcount.txt的内容为(你也可以自己随意填写):
this is my first test.
运行结果如下:
IDEA打印结果:
0x02 总结
因本人也是刚刚接触Spark,对其中的一些原理还不是很了解,此处写此博文只为搭建环境的一个记录,后面随着学习的深入,可以逐渐了解其中的原理。以后也许会考虑搭建集群环境!
在此,感谢网友为知识和技术传播做出的贡献!
0x03 参考内容
- https://my.oschina.net/orrin/blog/1812035
- https://blog.csdn.net/songhaifengshuaige/article/details/79480491
转载于:https://www.cnblogs.com/leejack/p/9160550.html
【Spark笔记】Windows10 本地搭建单机版Spark开发环境相关推荐
- 微课--搭建单机版PySpark开发环境(8分钟)
推荐教材: <中学生可以这样学Python(微课版)>,ISBN:9787302554639,董付国,应根球,清华大学出版社,2020年8月出版,2021年7月第2次印刷. 天猫双十一半价 ...
- 5G WiFi 安信可 BW16 模组 RTL8720DN 入门笔记 1 :搭建Arduino IDE 开发环境,点亮一盏LED灯。
文章目录 前言 一.认识RTL8720DN 二.认识 BW16 三.环境搭建 Step 1: 安装 Arduino IDE Step 2: 下载编译依赖环境 Step 3: 复制编译依赖环境工具到Ar ...
- 鸿蒙应用学习笔记01:搭建鸿蒙应用开发环境
文章目录 一.鸿蒙系统 (一)官网首页 (二)基础概念 - Ability 1.FA支持Page Ability 2.PA支持Service Ability和Data Ability (1)Servi ...
- python数据分析开发环境_在MAC上搭建python数据分析开发环境
最近工作转型到数据开发领域,想在本地搭建一个数据开发环境.自己有三年python开发经验,马上想到使用numpy.scipy.sklearn.pandas搭建一套数据开发环境. ubuntu的环境,百 ...
- Windows10下利用Visual Studio Code搭建C语言开发环境
Windows10下利用Visual Studio Code搭建C语言开发环境 1. 前言 2. 下载安装VSCode以及MinGW 2.1 下载安装VSCode 2.2 下载安装MinGW-w64 ...
- Android群英传神兵利器读书笔记——第一章:程序员小窝——搭建高效的开发环境
Android群英传神兵利器读书笔记--第一章:程序员小窝--搭建高效的开发环境 目录 1.1 搭建高效的开发环境之操作系统 1.2 搭建开发环境之高效配置 基本环境配置 基本开发工具 1.3 搭建程 ...
- WindowServer2012R2+Anoconda3.5.0.1+CUDA9.0+cuDNN7.1.3+Tensorflow-gpu1.6离线搭建深度学习开发环境
WindowServer2012R2+Anoconda3.5.0.1+CUDA9.0+cuDNN7.1.3+Tensorflow-gpu1.6离线搭建深度学习开发环境 关键词:Windows,Tens ...
- Linux下搭建Cortex-M嵌入式开发环境
Linux下搭建Cortex-M嵌入式开发环境 终于换上了Linux,更换之前考虑良久,最后选定了Ubuntu15(PS:自己家里用的是Fedora),主要是考虑Ubuntu确实更易用(但明显没有De ...
- 使用IntelliJ IDEA 13搭建Android集成开发环境(图文教程)
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/ ...
最新文章
- 上海交大情感脑电数据集(SJTU Emotion EEG Dataset,SEED)
- 关于计算机原理的知识
- 广西工学院c语言试题答案,广西工学院的C语言考试试题
- Knative Eventing 中 Channel 如何注入默认 Provisioner
- android跌倒检测,Android跌倒检测
- 【AI视野·今日CV 计算机视觉论文速览 第237期】Thu, 30 Sep 2021
- 宝塔可以修改服务器内存限制吗,宝塔内存使用率很高的解决方法 cpu过高这样做!...
- SQL Server数据库的查询、排序
- 计算机学院科技活动策划,计算机学院科技创新活动策划书(7页)-原创力文档...
- 父子类之间,成员函数重写、重载以及重定义的区别
- ENVI学习总结(一)——自定义坐标系
- vs2012转成vs2010
- Atitit atiMail atiDns新特性 v2 q39
- 阿里云云计算 22 VPC连接
- 三维实景模型制作,360度全景展示
- ftp服务器 文件权限,ftp服务器 文件权限设置
- SQL计算个人所得税函数
- 图像算法工程师 转行之路
- 中国半导体工业测试设备市场深度研究分析报告
- 2021好用的CI/CD工具推荐清单
热门文章
- 达奇机器人怎么看电量_圣诞怎么过?看看电影吃点儿特别的
- wsdl2java生成客户端代码_利用wsdl2java工具生成webservice的客户端代码
- mysql 索引建立标准_mysql索引规范
- dell服务器r730老自动重启_Dell R730服务器安装windows server 2008 R2蓝屏问题
- 8分频verilog线_解密POE交换机供电秘密,8芯网线断芯不再害怕!
- 台达编码器型号含义_编码器型号说明 编码器型号大全 编码器型号选型
- data transformation python_Data augmentation: 利用python进行图像扩建
- 表情识别(四)--多网络级联表情识别
- 孙鑫MFC笔记之八--文档串行化
- 6. 吴恩达机器学习课程-作业6-SVM