Spark学习之路(二)—— Spark开发环境搭建
一、安装Spark
1.1 下载并解压
官方下载地址:http://spark.apache.org/downloads.html ,选择Spark版本和对应的Hadoop版本后再下载:

解压安装包:
# tar -zxvf spark-2.2.3-bin-hadoop2.6.tgz
1.2 配置环境变量
# vim /etc/profile
添加环境变量:
export SPARK_HOME=/usr/app/spark-2.2.3-bin-hadoop2.6
export PATH=${SPARK_HOME}/bin:$PATH
使得配置的环境变量立即生效:
# source /etc/profile
1.3 Local模式
Local 模式是最简单的一种运行方式,它采用单节点多线程方式运行,不用部署,开箱即用,适合日常测试开发。
# 启动spark-shell
spark-shell --master local[2]
- local:只启动一个工作线程;
- local[k]:启动k个工作线程;
- local[*]:启动跟cpu数目相同的工作线程数。

进入spark-shell后,程序已经自动创建好了上下文SparkContext,等效于执行了下面的Scala代码:
val conf = new SparkConf().setAppName("Spark shell").setMaster("local[2]")
val sc = new SparkContext(conf)
二、词频统计案例
安装完成后可以先做一个简单的词频统计例子,感受spark的魅力。准备一个词频统计的文件样本wc.txt,内容如下:
hadoop,spark,hadoop
spark,flink,flink,spark
hadoop,hadoop
在scala交互式命令行中执行如下Scala语句:
val file = spark.sparkContext.textFile("file:///usr/app/wc.txt")
val wordCounts = file.flatMap(line => line.split(",")).map((word => (word, 1))).reduceByKey(_ + _)
wordCounts.collect
执行过程如下,可以看到已经输出了词频统计的结果:

同时还可以通过Web UI查看作业的执行情况,访问端口为4040:

三、Scala开发环境配置
Spark是基于Scala语言进行开发的,分别提供了基于Scala、Java、Python语言的API,如果你想使用Scala语言进行开发,则需要搭建Scala语言的开发环境。
3.1 前置条件
Scala的运行依赖于JDK,所以需要你本机有安装对应版本的JDK,最新的Scala 2.12.x需要JDK 1.8+。
3.2 安装Scala插件
IDEA默认不支持Scala语言的开发,需要通过插件进行扩展。打开 IDEA,依次点击 File => settings=> plugins 选项卡,搜索Scala插件(如下图)。找到插件后进行安装,并重启IDEA使得安装生效。

3.3 创建Scala项目
在IDEA中依次点击 File => New => Project 选项卡,然后选择创建Scala—IDEA工程:

3.4 下载Scala SDK
1. 方式一
此时看到Scala SDK为空,依次点击Create => Download ,选择所需的版本后,点击OK按钮进行下载,下载完成点击Finish进入工程。

2. 方式二
方式一是Scala官方安装指南里使用的方式,但下载速度通常比较慢,且这种安装下并没有直接提供Scala命令行工具。所以个人推荐到官网下载安装包进行安装,下载地址:https://www.scala-lang.org/download/
这里我的系统是Windows,下载msi版本的安装包后,一直点击下一步进行安装,安装完成后会自动配置好环境变量。

由于安装时已经自动配置好环境变量,所以IDEA会自动选择对应版本的SDK。

3.5 创建Hello World
在工程 src目录上右击 New => Scala class 创建Hello.scala。输入代码如下,完成后点击运行按钮,成功运行则代表搭建成功。

3.6 切换Scala版本
在日常的开发中,由于对应软件(如Spark)的版本切换,可能导致需要切换Scala的版本,则可以在Project Structures中的Global Libraries选项卡中进行切换。

3.7 可能出现的问题
在IDEA中有时候重新打开项目后,右击并不会出现新建scala文件的选项,或者在编写时没有Scala语法提示,此时可以先删除Global Libraries中配置好的SDK,之后再重新添加:

另外在IDEA中以本地模式运行Spark项目是不需要在本机搭建Spark和Hadoop环境的。
更多大数据系列文章可以参见个人 GitHub 开源项目: 程序员大数据入门指南
Spark学习之路(二)—— Spark开发环境搭建的更多相关文章
- 【Python】Java程序员学习Python(二)— 开发环境搭建
巧妇难为无米之炊,我最爱的还是鸡蛋羹,因为我和鸡蛋羹有段不能说的秘密. 不管学啥,都要有环境,对于程序员来说搭建个开发环境应该不是什么难题.按顺序一步步来就可以,我也只是记录我的安装过程,你也可以滴. ...
- C# NX二次开发环境搭建
在网上看到一篇C#二次开发环境搭建的文章:NX二次开发-使用NXOPEN C#手工搭建开发环境配置 ,写得非常好.我按照文章操作,过程中遇到几个问题,把问题分享给大家,希望对各位有帮助. 注意三点: ...
- 区块链Hyperledger Fabric 学习记录(一)开发环境搭建(ubuntu16.04/ubuntu18.04)
目录 Fabric开发环境搭建 更新说明 教程环境及软件版本 Docker 安装Docker 配置用户组 配置Aliyun Docker加速器 安装docker-compose Go 下载源码 安装源 ...
- Android学习笔记(一)开发环境搭建
Android开发环境搭建 安装JDK 1.如果你还没有JDK的话,可以去这里http://www.oracle.com/technetwork/java/index.html ,接下来的工作就是安装 ...
- Zephyr学习(二)开发环境搭建
一.概述 Zephyr支持在Windows.Linux和MacOS环境下开发,这里只介绍如何在Windows下搭建zephyr的开发环境. 二.步骤 2.1安装msys2 msys2是一个Linux模 ...
- Nginx详解二十三:Nginx深度学习篇之Nginx+Lua开发环境搭建
Nginx+Lua开发环境 1.下载LuaJIT解释器wget http://luajit.org/download/LuaJIT-2.0.2.tar.gztar -zxvf LuaJIT-2.0.2 ...
- C++学习之路——1.linux下环境搭建
学习之路,可说各有各的看法和方法.对于我来说,完全是兴趣一下子来了,脑壳发热吧.就想有个干净的环境,只想着与程序有关的东西练一练. 目前想学习C++,可是打开VC++6,再安了VS2010.VS201 ...
- 【深度学习笔记】Anaconda及开发环境搭建
在学习了一段时间台大李宏毅关于deep learning的课程,以及一些其他机器学习的书之后,终于打算开始动手进行一些实践了. 感觉保完研之后散养状态下,学习效率太低了,于是便想白天学习,晚上对白天学 ...
- Flutter入门教程(二)开发环境搭建
学习Flutter,首先需要搭建好Flutter的开发环境,下面我将一步步带领大家搭建开发环境并且成功运行flutter项目. Flutter环境配置主要有这几点: 系统配置要求 Java环境 Flu ...
- angularjs2 学习笔记(一) 开发环境搭建
开发环境,vs2013 update 5,win7 x64,目前最新angular2版本为beta 17 第一步:安装node.js 安装node.js(https://nodejs.org/en/) ...
随机推荐
- Jquery对象和dom对象获取html的方法
1)DOM对象 var domObj = document.getElementById("id"); //DOM对象 domObj.innerHTML;// domObj.out ...
- [Songqw.Net 基础]WPF插件化中同步Style
原文:[Songqw.Net 基础]WPF插件化中同步Style 版权声明:本文为博主原创文章,未经博主允许可以随意转载 https://blog.csdn.net/songqingwei1988/a ...
- python 教程 第十五章、 结构布局
第十五章. 结构布局 #!/usr/bin/env python #(1)起始行 "this is a module" #(2)模块文档 import sys #(3)模块导入 d ...
- getResources()方法
今天做一个Android文件管理器.它使用了很多当地的用途getResources. Drawable currentIcon = null; ------ current ...
- Matlab随笔之求解线性方程
原文:Matlab随笔之求解线性方程 理论知识补充: %矩阵除分为矩阵右除和矩阵左除. %矩阵右除的运算符号为“/”,设A,B为两个矩阵,则“A/B”是指方程X*B=A的解矩阵X. %矩阵A和B的列数 ...
- C#使用Selenium实现QQ空间数据抓取 登录QQ空间
经@吃西瓜的星星提醒 首先我们介绍下Selenium Selenium也是一个用于Web应用程序测试的工具.Selenium测试直接运行在浏览器中,就像真正的用户在操作一样.支持的浏览器包括IE.Mo ...
- MVC 添加数据的三种方法
1 通过Request接收数据,进行添加 <%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<d ...
- 开源数据源使用 DBCP 和 C3PO
jar包: commons-dbcp-1.4.jar commons-pool-1.5.6.jar mysql-connector-java-5.0.8-bin.jar 建立dbcp的配置文件 dbc ...
- 细谈unity资源管理的设计
一.概要 本文主要说说Unity是如何管理的,基于何种方式,基于这种管理方式,又该如何规划资源管理,以及构建bundle,是后面需要详细讨论的. 二.Unity的资源管理方式 2.1 资源分类 uni ...
- PySide——Python图形化界面入门教程(三)
PySide——Python图形化界面入门教程(三) ——使用内建新号和槽 ——Using Built-In Signals and Slots 上一个教程中,我们学习了如何创建和建立交互widget ...