Spark环境的搭建与运行
Spark本地安装与配置
- 下载spark后解压,并cd到解压目录下
- 运行实例程序测试是否一切正常
./bin/run-example org.apache.spark.examples.SparkPi
- 在本地模式下设定要使用的线程数目
local[N]
master=local[2] ./bin/run-example org.apache.spark.examples.SparkPi
Spark集群
- Spark集群由两类程序构成:一个驱动程序和多个执行程序。
- 本地模式中,所有的处理都是运行在一个JVM内的。
- 如果要在一个Spark单机集群上运行示例代码,只要传入猪截点的IP和PROT端口号
master=spark://IP:PORT ./bin/run-example org.apache.spark.examples.SparkPi
Spark 编程模型
- SparkContext 和 Spark Shell
SparkContext类和SparkConf类
- 创建一个四线程的SparkContext类
val conf = new SparkConf()
.setAppName("Text Spark APP")
.setMaster("local[4]")
val sc = new SparkContext(conf)
or
val sc = new SparkContext("local[4]", "Test Spark App")
Spark shell
- 进入程序主目录下,运行如下代码启动 Spark shell (Scala语言的shell)
./bin/spark shell
- 启动spark shell 之后会自动初始化一个SparkContext对象。
- 进入主目录下,运行如下代码启动Python shell。
./bin/pyspark
- python下的SparkContext对象可以通过Python变量sc来调用。
弹性分布式数据集
1.创建RDD
- 从现有的集合创建RDD
val collection = List("a", "b", "c", "d", "e")
val rddFromCollection = sc.parallelize(collection)
- 也可以从本地文件中创建RDD
val rddFromTextFile = sc.textFile("license")
2.Spark操作
- Spark编程模式下,所有的操作都被分为转换(transformation)和执行(action)。
- 最常见的转换操作就是map,该操作对一个RDD的每一条记录都执行某个函数,从而将输入映射称为新的输出。
- 实例
- 对于之前创建的一个由若干String构成的RDD对象,通过map将每一个字符串转换为一个整数,返回一个由若干Int组成RDD对象。
val intsFromStringsRDD = rddFromTextFile.map(line => line.size)
- 执行count返回RDD中的记录数目。
intsFromStringsRDD.cout
- 如果要计算每行字符串的平均长度,可以先sum计算所有记录的总长,再除以总的记录数目。
val sumOfRecords = intsFromStringsRDD.sum
val numRecords = intsFromStringsRDD.count
val aveLengthOfRecord = sumOfRecords / numRecords
or
val aveLengthOfRecordChained =rddFromTextFile.map(line => line.size).sum/rddFromTextFile.count
- Spark中转换操作是延后的。在RDD上调用一个转换操作并不会立即触发相应的计算。相反,这些转换会链接起来,并只有在执行操作时才会被高效的计算。
- 实例
- 下面的代码不会触发实际的操作
val transformedRDD = rddFromTextFile.map(line => line.size).filter(size =>size>10).map(size =>size*2)
- 调用如下执行操作,计算将会被触发
val computation = transformedRDD.sum
3.RDD缓存策略
- 将RDD缓存在集群的内存中。
rddFromTextFile.cache
- 首次缓存会花费一些时间,下一次访问就会很快,数据可以直接从内存中读取,从而减少I/O操作。
3.广播变量和累加变量
- 两类特殊变量:广播变量和累加变量
+广播变量为只读变量,创建广播变量如下
val broadcastAList = sc.broadcast(List("a", "b", "c", "d", "e"))
- 广播变量可以被非驱动程序的节点访问
sc.parallelize(List("1", "2", "3")).map(x =>broadcastAList.value ++ x).collect
Spark Scala 编程入门
- 对于Scala程序而言,需要创建两个文件:Scala代码文件以及项目的构建配置文件。
- 项目将使用SBT(Scala Build Tool)来构建。
- 实例
- SBT配置文件如下。各行代码之间的空行是必须的!
name := "scala-spark-app"
\空行
version := "1.0"
\空行
scalaVersion := "2.10.4"
\空行
libraryDependencies += "org.apache.spark" %% "spark-core" % "1.2.0"
- 导入所需要的Spark类
import org.apache.spark.SparkContext
import org.apache.spark.SparkContext._
- 初始化所需要的SparkContext对象,并通过textFile函数来访问CSV数据文件
def main(args: Array[String]){
val sc = new SparkContext("local[2]", "First Spark App")
val data = sc.textFile("data/UserPerchaseHistory.csv")
.map(line => line.split(",")
.map(purchaseRecord => (perchaseRecord(0), purchaseRecord(1),perchaseRecord(2)))
- RDD中每条记录都是由(user, product, price)构成,对商店计算如下指标:购买总次数,客户总个数,总收入。
val numPurchases = data.count()
val uniqueUsers = data.map{ case(user, product, price) => user}.distinct().count()
val totalRevenue = data.map{ case(user, product, price) => price.toDouble}.sum()
val productsByPopularity = data
.map{case(user, product, price) => (product, 1)}
.reduceByKey(_ + _)
.collect()
.sortBy(-_._2)
val mostPopular = productsByPopularity(0)
- 结果打印
println(Total purchases:"+ numPurchases)
...
}
}
Spark Python 编程入门
from pyspark import SparkContext
sc = SparkContext("local[2]", "First Spark App")
# spark读取本地文件
t = sc.textFile("file:///home/users/douzhi/t.txt")
#spark读取hdfs文件
t = sc.textFile("hdfs:///path/...")
print t.first()
Spark环境的搭建与运行的更多相关文章
- spark本地环境的搭建到运行第一个spark程序
搭建spark本地环境 搭建Java环境 (1)到官网下载JDK 官网链接:https://www.oracle.com/technetwork/java/javase/downloads/jdk8- ...
- 分布式平台Spark环境的搭建
1.安装Spark之前需要先安装Java,Scala及Python(个人喜欢用pyspark,当然你也可以用原生的Scala) 首先安装Java jdk: 我们可以在Oracle的官网下载Java S ...
- 在Linux(Debian)环境下搭建并运行GPU
首先通过以下命令查看是否GPU驱动成功: 注意:需要在bash终端输入 import tensorflow as tf hello = tf.constant('Hello, TensorFlow!' ...
- 分布式计算框架-Spark(spark环境搭建、生态环境、运行架构)
Spark涉及的几个概念:RDD:Resilient Distributed Dataset(弹性分布数据集).DAG:Direct Acyclic Graph(有向无环图).SparkContext ...
- Hive On Spark环境搭建
Spark源码编译与环境搭建 Note that you must have a version of Spark which does not include the Hive jars; Spar ...
- 在Ubuntu14.04 64bit上搭建单机Spark环境,IDE为Intelli IDEA
在Ubuntu14.04 64bit上搭建单机Spark环境,IDE为Intelli IDEA 一. 环境 Ubuntu14.04 64位 JDK 1.8.0_73 scala-2.10. ...
- 在Ubuntu里搭建spark环境
注意:1.搭建环境:Ubuntu64位,Linux(也有Windows的,我还没空试) 2.一般的配置jdk.Scala等的路径环境是在/etc/profile里配置的,我自己搭建的时候发 ...
- Spark On Yarn搭建及各运行模式说明
之前记录Yarn:Hadoop2.0之YARN组件,这次使用Docker搭建Spark On Yarn 一.各运行模式 1.单机模式 该模式被称为Local[N]模式,是用单机的多个线程来模拟Spa ...
- Spark学习进度-Spark环境搭建&Spark shell
Spark环境搭建 下载包 所需Spark包:我选择的是2.2.0的对应Hadoop2.7版本的,下载地址:https://archive.apache.org/dist/spark/spark-2. ...
随机推荐
- itext 落雨 out of membery Memory Optimization
Memory Optimization If a document deals with a lot of data or large elements, such as images, it is ...
- jmp && call && ret 特权级转移 & 进程调度
①jmp是不负责任的调度,不保存任何信息,不考虑会回头.跳过去就什么也不管了.②call,保存eip等,以便程序重新跳回.ret是call的逆过程,是回头的过程.这都是cpu固有指令,因此要保存的信息 ...
- 【转】Spring+Hibernate+EHcache配置(一)
大量数据流动是web应用性能问题常见的原因,而缓存被广泛的用于优化数据库应用.cache被设计为通过保存从数据库里load的数据来减少应用和数据库之间的数据流动.数据库访问只有当检索的数据不在cach ...
- 详细解析: VictorOps 是如何利用和完善 ChatOps?
ChatOps,即聊天应用,在软件开发中被广泛应用改进开发者之间的沟通.简单地说,ChatOps 是将内容或行动 (或两者) 迁移到聊天客户端.这样做之后,企业内的所有团队都能分享重要信息,行动,及其 ...
- python time相关操作
1.获取当前时间的两种方法: 代码如下: import datetime,timenow = time.strftime("%Y-%m-%d %H:%M:%S")print now ...
- 跌跌撞撞,用MAVEN看图说话的编译了一个JAR出来
URL: http://www.yiibai.com/maven/create-a-java-project-with-maven.html mvn archetype:generate -Dgrou ...
- 第一章、关于SQL Server数据库的备份和还原(sp_addumpdevice、backup、Restore)
在sql server数据库中,备份和还原都只能在服务器上进行,备份的数据文件在服务器上,还原的数据文件也只能在服务器上,当在非服务器的机器上启动sql server客户端的时候,也可以通过该客户端来 ...
- 雷军北大演讲:除了聪明和勤奋我们还需要什么(关键是有了梦想以后,你能不能把这个东西付诸实践)good
雷军北大演讲:除了聪明和勤奋我们还需要什么 昨天我在乌镇参加了全球互联网峰会,在这个会议上有马云,也有苹果公司的高级副总裁,主持人抛出了一个问题,说雷军你说你有一个目标,要用5到10年的时间做智能手机 ...
- php Ajax 局部刷新
php Ajax 局部刷新: HTML部分 </head> <body> <h1>Ajax动态显示时间</h1> <input type=&quo ...
- *MySQL卸载之后无法重装,卡在Apply security settings:Error Nr.1045