spark快速入门
来源:互联网 发布:正交矩阵的性质证明 编辑:程序博客网 时间:2024/06/06 01:06
spark快速入门的helloworld
1.下载安装
spark安装很简单,开箱即用,所以只需要下载解压到指定位置就可以了,另外jdk必不可少。
http://spark.apache.org/downloads.html
2.服务
spark常见的服务方式有以下几种
- spark-submit,提交自己的spark-jar给spark运行
- spark-shell,在spark-submit的基础上直接实例了sparkcontext对象,可以写入代码和spark实时交互
- spark-sql,在spark-submit的基础上,实例了sparkcontext和sqlcontext,使用sql和spark交互
这里使用spark-shell直接写入代码和spark进行交互
3.部署(运行方式)
官方叫做deploy(部署),我理解为spark的运行方式。
spark是分布式计算框架,所以要涉及到资源的管理,分布式的资源管理框架有yarn、mesos、kubernetes等,spark实现了这些分布式资源框架的接口,就可以在这些分布式资源框架上运行。
目前spark的deploy方式有以下几种,spark启动的时候由参数master指定。
- local,本地启动,会在本地启动指定进程来运行,一般用于调试。
- local,启动一个进程
- local[k],启动k个进程
- local[k,f],启动k个进程,单个任务的失败次数为f,失败次数默认为4
- local[*],机器有多少个core,启动多少个进程
- local[*,f]
- spark://host:port,standalone模式,启动spark自己的资源管理系统,这个很少用。
- mesos://host:port,mesos模式,mesos是随着天然支持docker火起来的,随着kubernetes的独占鳌头,mesos渐渐淡出人们的视野,mesos用的也非常少。
- yarn,在hadoop的yarn中运行,生产中使用最多的。
- kubernetes,新版的spark在支持测试中。
下面只测试两种最常用的模式,yarn和local,前者是生产中使用最多,后面多为测试调试使用,如果你现在初学spark且没有多个机器,就可以用这个模式来运行spark。
3.1local运行方式
bin/spark-shell --master local[10] \--driver-memory 2g --driver-cores 2 \--excutor-memory 2g
输入地址http://ip:4040/可以查看web页面
3.2yarn运行方式
bin/spark-shell --master yarn \--driver-memory 2g --driver-cores 2 \--executor-memory 16g --executor-cores 16 \--num-executors 3
spark-shell启动后,命令行变为下面的样子
图中有spark context avaliable as “sc”,spark session avaliable as “spark”
spark-shell中实例化了sparkcontext对象,sparkcontext对象是和spark进行交互的入口。
4.HelloWorld
准备一个文本文件,然后上传到hdfs上。如果你是用yarn模式运行的,可以准备一个很大的,顺便看下spark处理数据的能力。
这里我上传了一个2g大小,2亿行的文本数据。
下面在spark-shell中输入代码
#计算行数scala> val textfile=sc.textFile("hdfs://ht05:9000/zhaowei/pass.txt");textfile: org.apache.spark.rdd.RDD[String] = hdfs://ht05:9000/zhaowei/pass.txt MapPartitionsRDD[1] at textFile at <console>:24scala> textfile.count()res0: Long = 200284489 #countword#flatmap是将一个变为多个,map是一个对一个变形,reduceByKey只对key进行reducescala> val wordcount=textfile.flatMap(line=>line.split(" ").map(word=>(word,1))).reduceByKey(_+_)wordcount: org.apache.spark.rdd.RDD[(String, Int)] = ShuffledRDD[3] at reduceByKey at <console>:26scala> wordcount.count()res1: Long = 195558136 ##dataframe,dataframe相当于一张表,按照结构化数据操作scala> val df=textfile.toDF("name");df: org.apache.spark.sql.DataFrame = [name: string]scala> df.count()res2: Long = 200284489 scala> df.filter(col("name").like("%zhaowei%")).count()res3: Long = 10354 scala> df.filter(col("name").like("%zhaowei%")).show(10)+-----------------+| name|+-----------------+| 0396zhaowei || 123zhaowei|| 123zhaowei || 123zhaoweijie|| 1988217zhaowei || 19891127zhaowei || 2993456zhaowei || 321zhaowei|| 665401671zhaowei|| 6691325zhaowei |+-----------------+only showing top 10 rows##机器学习,利用逻辑回归算法跑模型##下面的代码,可以跑下看看结果,查下逻辑回归的资料,这个算法在统计学中经常用到。val df=textfile.map(word=>(word.length)).toDF("f1");import org.apache.spark.ml.feature.VectorAssemblerval df2= new VectorAssembler().setInputCols(Array("f1")).setOutputCol("features").transform(df)val df3= df2.withColumn("label", $"f1")import org.apache.spark.ml.classification.LogisticRegression val lr = new LogisticRegression().setMaxIter(10)val model = lr.fit(df3)val weights = model.weights#用训练的模型预测原始数据model.transform(df3).show()
5.参考
http://spark.apache.org/examples.html
http://spark.apache.org/docs/latest/cluster-overview.html
http://spark.apache.org/docs/latest/running-on-yarn.html
- Spark快速入门指南
- Spark快速入门指南
- Spark快速入门
- Spark快速入门指南
- spark快速入门
- spark快速入门
- Spark快速入门指南
- Spark快速入门指南
- Spark快速入门指南
- spark快速入门
- spark快速入门
- Spark 快速入门
- Spark基本概念快速入门
- Spark基本概念快速入门
- spark快速入门
- Apache Spark - Quick Start (Spark 快速入门)
- Spark快速入门指南(Quick Start Spark)
- Spark快速入门指南(Quick Start Spark)
- 【Tensorflow】Tensorflow一些常用基本概念与函数(2)
- opencv 鼠标选择ROI
- java 进阶学习之路的开始
- 联网检测身份证验证返照片
- Neo4j中的SQL(2)
- spark快速入门
- 用小米机作为调试机出现错误:Installation failed with message Failed to establish session
- NVIDIA-TX2搭建QT环境开发ROS
- java文件读写耗时比较
- vue组件使用
- LeetCode 396. Rotate Function
- HttpURLConnection 、HttpPost、Okhttp 等POST方式发送JSON数据
- python基础-管道通信(进程)、线程Condition使用
- JAVA 生成当前时间后一天零点