• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
导航菜单
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • windows
  • 服务器硬件
  • 服务器运维
  • 云计算
  • 虚拟化
  • IIS教程
  • Linux
  • Apache
  • Ftp
  • DNS
  • Nginx
您的位置:首页 > 服务器 >云计算 > 【Spark1.3官方翻译】Spark快速入门,spark1.3spark

【Spark1.3官方翻译】Spark快速入门,spark1.3spark

作者:网友 字体:[增加 减小] 来源:互联网

本文主要包含spark1.3,spark官方文档,spark星火官方网站,spark官方网站,spark入门教程等服务器相关知识,网友希望可以进行参考

【Spark1.3官方翻译】Spark快速入门,spark1.3spark


英文标题:Quick Start

英文原址:http://spark.apache.org/docs/latest/quick-start.html

Spark Version:1.3.0

1,       使用Spark-Shell进行交互式分析

1.1   基本使用

Spark-shell为学习API提供了简单的方式,它是一个非常强大的进行交互式数据分析的工具,在Scala或Python中都有提供。在Spark目录中运行下面的命令:

./bin/spark-shell

Spark的主要抽象是一个分布式数据集合,叫做弹性分布式数据集(RDD),可以通过读取HDFS文件或转换其它RDD来创建RDD,下面示例表示的是通过读取一个HDFS文件来创建RDD:

val textFile = sc.textFile(“README.md”)

RDD有transformation和action两种操作,前者返回一个指向新RDD的指针,后者返回值。下面是一些action操作:

textFile.count()

textFile.first()

下面是一些transformation操作,用filter过滤出文件中的Spark行得到一个新的RDD:

val linesWithSpark = textFile.filter(line => line.contains(“Spark”))

可以把transformation和action串起来:

textFile.filter(line => line.contains(“Spark”)).count()//计算了README.md文件中有多少行包含Spark这个单词

 

1.2   更多RDD操作

可以用transformation和action来做很多更复杂的计算,例如下面的示例是找出所有行中单行的最多单词数

textFile.map(line => line.split(“ “).size).reduce((a,b) => if(a>b) a else b)

这行代码首先将一行映射成一个整数值(单词数)生成一个RDD,在这个RDD上调用reduce找出最大size最大的一个。Map和reduce的参数是Scala中的函数,可以使用其大量的语言特性或Scala/Java库,例如,可以使用其他语言声明的包使得上面的代码更易理解:

import java.lang.Math

textFile.map(line => line.split(“ “).size).reduce((a,b) => Math.max(a,b))

一个通用的数据模型是MapReduce,Spark可以轻松地实现MapReduce:

val wordCounts = textFile.flatMap(line => line.split(“ “)).map(word => (word,1)).reduceByKey((a,b) => a+b)

这里结合了flatMap,map,reduceByKey几个转换计算每一个单词的数以(String,Int)对作为一个RDD,在Shell中合并这些单词数,可以用collect这个action:

wordCounts.collect

 

1.3   缓存(Caching)

Spark支持将数据集放到集群的内存中进行缓存,这对于要重复使用的数据非常管用,例如查询小的热点数据集或者运行类似于PageRank的迭代算法,下面的示例将linesWithSpark数据集进行缓存:

linesWithSpark.cache()

linesWithSpark.count()

linesWithSpark.count()

看上去用Spark缓存一个100行的文件挺愚蠢的,但是有意思的是相同的函数也可以被用在很大的数据上,而且效果一样,即使它们跨上百个节点存储,你可以用bin/spark-shell交互式的连接到一个集群。

2,       独立的应用程序

使用Spark API写一个独立应用程序,下面从一个简单的程序开始(Scala&SBT):

/* SimpleApp.scala */

importorg.apache.spark.SparkContext

importorg.apache.spark.SparkContext._

importorg.apache.spark.SparkConf

 

objectSimpleApp{

 def main(args:Array[String]){

   val logFile="YOUR_SPARK_HOME/README.md"// Should be some file on your system

   val conf=newSparkConf().setAppName("Simple Application")

   val sc=newSparkContext(conf)

   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))

 }

}

注意,应用程序必须定义一个main()函数而不是继承scala.App,scala.App的子类可能不会正确的运行(Why?)。

这个程序分别计算了README.md文件中包含a和b的行数,在程序中你要用自己的Spark_HOME替换掉YOUR_SPARK_HOME。独立程序不像Spark-Shell启动时会初始化自己的SparkContext,而是需要将初始化SparkContext作为程序的一部分。

给SparkContext构造器传递一个SparkConf对象,这个对象包含了应用程序的相关信息。应用程序依赖于Spark API,所以还要有一个SBT的配置文件,下面的simple.sbt解释了Spark依赖,此依赖还添加了Spark依赖的一些库。

name:="Simple Project"
version:="1.0"


 
  
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 【Spark1.3官方翻译】Spark集群模式概览,spark1.3spark
  • 【Spark1.3官方翻译】Spark快速入门,spark1.3spark
  • 【甘道夫】Spark1.3.0 Submitting Applications 官方文档精华摘要,spark1.3
  • 【Spark1.3官方翻译】 Spark Submit提交应用程序,spark1.3spark

相关文章

  • Win 10服务智能化有什么根据?,win智能化
  • 关于HIVE数据仓库的基本操作,hive数据仓库
  • 新增数据页面360浏览器样式异常,新增360浏览器样式
  • Flocker浅析与Docker插件(3),flockerdocker
  • Hadoop之——Linux基本命令回顾,hadooplinux回顾
  • hive优化-----控制hive任务的reduce数,hivereduce
  • Sqoop导入数据到Hadoop代理执行,sqoophadoop
  • R.net获取R中股票的dataframe中的data,r.netdataframe
  • 如何动态地给vSphere虚拟机模板注入信息,vsphere虚拟机
  • 《2》CentOS7.0+OpenStack+kvm云平台部署—配置Keystone,centos7.0kvm

文章分类

  • windows
  • 服务器硬件
  • 服务器运维
  • 云计算
  • 虚拟化
  • IIS教程
  • Linux
  • Apache
  • Ftp
  • DNS
  • Nginx

最近更新的内容

    • 如何创造自己的数据字典(词库转换工具的使用),创造自己工具的使用
    • Redis学习(一)安装并测试,redis学习安装测试
    • myeclipse2013 建的web项目没有web.xml,myeclipse中web.xml
    • hbase数据存取策略,hbase存取策略
    • Spark编程指南V1.4.0(翻译),编程指南v1.4.0
    • Error: Failed to launch instance "win7": Please try again later [Error: No valid host was found. ].,win7valid
    • Andrew Ng机器学习课程9-补充,andrew9-
    • 关于云服务器的瞎想,云服务器瞎想
    • 超人学院Hadoop大数据资源分享,超人学院hadoop分享
    • 分布式数据库MVCC读写设计,数据库mvcc读写

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有