快速开始
本文将介绍如何用scala、java、python编写一个spark单击模式的程序。
首先你只需要在一台机器上成功建造Spark;做法:
进入Spark的根目录,输入命令:$ sbt/sbt package
(由于天朝伟大的防火墙,大陆地区是无法成功的,除非你可以顺利FQ),不想爬墙的可以下载预编译好的Spark ,spark-0.7.2-prebuilt-hadoop1.tgz.gz
Spark shell的交互式分析
一、基础
概念:
Spark的交互式脚本是一种学习API的简单途径,也是分析数据集交互的有力工具。在Spark根目录运行:./spark-shell
Spark抽象的分布式集群空间叫做Resilient Distributed Dataset (RDD)弹性数据集。
RDD有两种创建方式:1、从Hadoop的文件系统输入(例如HDFS);2、有其他已存在的RDD转换得到新的RDD。
实践:
1、现在我们利用Spark目录下的README文件来创建一个新的RDD:
scala> val textFile = sc.textFile("README.md")
textFile: spark.RDD[String] = spark.MappedRDD@2ee9b6e3

2、RDD有两种操作,分别是action(返回values)和transformations(返回一个新的RDD);下面开始些少量的actions:
scala> textFile.count() // Number of items in this RDD
res0: Long = 74
scala> textFile.first() // First item in this RDD
res1: String = # Spark

3、下面使用transformations中的filter返回一个文件子集的新RDD
scala> textFile.filter(line => line.contains("Spark")).count() // How many lines contain "Spark"?
res3: Long = 15
二、基于RDD的更多操作1、RDD的actions和transformations可以被用于更多复杂的计算。例如,我们想找出含有字数最多的行:
scala> textFile.map(line => line.split(" ").size).reduce((a, b) => if (a > b) a else b)
res4: Long = 16

2、为了使程序更简单,我们可以引用包来使用已有的函数方法来编写程序:
scala> import java.lang.Math
import java.lang.Mathscala> textFile.map(line => line.split(" ").size).reduce((a, b) => Math.max(a, b))
res5: Int = 16

3、Spark可以很容易的执行MapReaduce流
scala> val wordCounts = textFile.flatMap(line => line.split(" ")).map(word => (word, 1)).reduceByKey((a, b) => a + b)
wordCounts: spark.RDD[(java.lang.String, Int)] = spark.ShuffledAggregatedRDD@71f027b8这里我们运用了transformations中的flatMap, map, reduceByKey来计算文件中每个单词出现的次数并存储为(String, Int)对的RDD数据集

4、使用actions的collect方法返回计算好的数值
scala> wordCounts.collect()
res6: Array[(java.lang.String, Int)] = Array((need,2), ("",43), (Extra,3), (using,1), (passed,1), (etc.,1), (its,1), (`/usr/local/lib/libmesos.so`,1), (`SCALA_HOME`,1), (option,1), (these,1), (#,1), (`PATH`,,2), (200,1), (To,3),...

三、缓存Spark还支持将数据集缓存到内存中。这解决了处理大量迭代运算(例如,机器学习算法)时的反复磁盘IO操作的耗时。内存IO操作和磁盘IO操作的用时完全不是一个数量级的,带来的效率提升是不言而喻的。1、做个小示例,标记我们之前的linesWithSpark数据集并将其缓存:
scala> linesWithSpark.cache()
res7: spark.RDD[String] = spark.FilteredRDD@17e51082
scala> linesWithSpark.count()
res8: Long = 15

四、一个单机版的scala作业
/*** SimpleJob.scala ***/
import spark.SparkContext
import SparkContext._object SimpleJob {def main(args: Array[String]) {val logFile = "/var/log/syslog" // Should be some file on your systemval sc = new SparkContext("local", "Simple Job", "$YOUR_SPARK_HOME",List("target/scala-2.9.3/simple-project_2.9.3-1.0.jar"))val logData = sc.textFile(logFile, 2).cache()val numAs = logData.filter(line => line.contains("a")).count()val numBs = logData.filter(line => line.contains("b")).count()println("Lines with a: %s, Lines with b: %s".format(numAs, numBs))}
}程序解释:首先要创建一个SparkContext对象,传入四个参数,分别是:1.使用的调度器(示例中使用了local scheduler);2.程序名称;3.Spark安装路径;4.包含这个程序资源的jar包名。注意:在分布式中后两个参数必须设置,安装路径来确定Spark通过哪个several nodes运行;jar名会让Spark自动向slave nodes传输jar文件

这个程序的文件依靠了Spark的API,所以我们必须有一个sbt的配置文件用以说明程序和Spark的依赖关系。下面是配置文件simple.sbt:
name := "Simple Project"version := "1.0"scalaVersion := "2.9.3"libraryDependencies += "org.spark-project" %% "spark-core" % "0.7.3"resolvers ++= Seq("Akka Repository" at "http://repo.akka.io/releases/","Spray Repository" at "http://repo.spray.cc/")
为了让sbt正确的工作,我们必须将SimpleJob.scala和simple.sbt根据典型的目录结构进行布局。完成布局后,我们可以创建一个包含了程序源码的JAR包,然后使用sbt的run命令来执行示例程序
$ find .
.
./simple.sbt
./src
./src/main
./src/main/scala
./src/main/scala/SimpleJob.scala$ sbt package
$ sbt run
...
Lines with a: 8422, Lines with b: 1836

这样就完成了程序在本地运行的示例

转载于:https://www.cnblogs.com/vincent-hv/p/3298416.html

Spark官方文档——本地编写并运行scala程序相关推荐

  1. Spark官方文档整理:spark-core

    Spark 官方文档 1,spark 概述 Apache Spark 是一个快速通用的集群计算系统,它提供了提供了java,scala,python和R的高级API,以及一个支持一般图计算的优化引擎. ...

  2. Hyperledger Fabric 2.0 官方文档中文版 第5章 开发应用程序

    Hyperledger Fabric 2.0 官方文档中文版 第5章 开发应用程序 总目录 5.开发应用程序 情景 PaperNet网络 介绍参与者 分析 商业票据生命周期 交易 账本 过程和数据设计 ...

  3. 006-基于hyperledger fabric1.4( 官方文档)编写第一个应用【外部nodejs调用】

    一.概述 官方原文地址 Writing Your First Application 如果对fabric网络的基本运行机制不熟悉的话,请看这里. 注意:本教程是对fabric应用以及如何使用智能合约的 ...

  4. spark官方文档_Apache Spark 文档传送门

    新手会对官方文档比较陌生,不知道从何入手,下面整理基于 Spark 的常用文档链接 Apache Spark Github https://github.com/apache/spark Apache ...

  5. spark官方文档_这些未在 Spark SQL 文档中说明的优化措施,你知道吗?

    本文来自上周(2020-11-17至2020-11-19)举办的 Data + AI Summit 2020 (原 Spark+AI Summit),主题为<Spark SQL Beyond O ...

  6. spark官方文档_Spark机器学习之Pipeline

    部门的大数据平台支持spark编程了,赶紧跟上步伐看能把分析水平提高到哪一个台阶! 底层是基于数平TDW的,对编程接口进行了封装,管道使用的是 from lib.pipeline import MLP ...

  7. 《Spark 官方文档》Spark配置(一)

    Spark配置 Spark有以下三种方式修改配置: Spark properties (Spark属性)可以控制绝大多数应用程序参数,而且既可以通过 SparkConf 对象来设置,也可以通过Java ...

  8. spark java文档中文版_spark api之一:Spark官方文档 - 中文翻译

    1 概述(Overview) 总体来讲,每一个Spark驱动程序应用都由一个驱动程序组成,该驱动程序包含一个由用户编写的main方法,该方法会在集群上并行执行一些列并行计算操作.Spark最重要的一个 ...

  9. java spark yarn_《Spark官方文档》在YARN上运行Spark

    原文链接 Spark在 0.6.0版本后支持在YARN(hadoop NextGen)上运行,并且在后续版本中不断改进. 在YARN上启动Spark 首先,确认 HADOOP_CONF_DIR或YAR ...

最新文章

  1. 外卖平台涉嫌大数据杀熟,处理不能“自说自话”
  2. http-helloworld
  3. 01_jeecms建站
  4. 由 go orm 引发的探索
  5. 移动云TeaTalk(长沙站)| 聚焦“云网一体”发展新机遇
  6. asp还有人用吗_中药都安全吗?服用这些中药需要注意
  7. mysql+一致性非锁定读_MySQL探秘(六):InnoDB一致性非锁定读
  8. 【华为云技术分享】当我们在谈论卡片时,我们到底在谈论什么?
  9. matlab malloc,[原创]Matlab 高性能代码编写(三)内存是要先分配再使用的
  10. 2018 蓝桥杯省赛 B 组模拟赛(一)I. 天上的星星(二维前缀和)
  11. Android view 小总结
  12. 在.Net中执行js
  13. delphi 读取excel 两种方法
  14. 数学建模三大模型以及十大算法
  15. android版youtube最新版下载,youtube安卓版
  16. 微信小程序开发——调用免费天气api接口(高德、天气API)
  17. 零界之痕服务器维护,零界之痕进不去怎么办 游戏故障解决方法
  18. TEXTILEGENESIS纺织品TG追溯平台是什么?
  19. idea项目老是重启_idea反复重启服务器
  20. 关于error C2065 错误

热门文章

  1. 商务网站开发这些优势值得青睐
  2. python的windows出现问题_Windows下使用python库 curses遇到错误消息的解决方案
  3. python123数字形式转换_【Python系统学习02】数据类型与类型转换
  4. 潘通色卡tcx电子版_【收藏】最全“潘通色卡电子版”,只带手机对色一步到位!...
  5. 内网使用ohmyzsh
  6. lucene正向索引(续)——每次commit会形成一个新的段,段_1的域和词向量信息可能存在_0.fdt和_0.fdx”中...
  7. 《计算机图形学》2.1.7 立体感和虚拟现实系统
  8. HTTP Status 404 - No result defined for action com.csdhsm.struts.action.LoginAction and result error
  9. MySQL分区的限制(最多有多少个分区)
  10. Symfony2学习笔记之HTTP Cache