Spark的intersection intersection顾名思义,他是指交叉的.当两个RDD进行intersection后,将保留两者共有的.因此对于RDD1.intersection(RDD2) 和RDD2.intersection(RDD1) .应该是一致的. 比如对于,List1 = {1,2,3,4,5} 和 List1 = {3,4,5,6,7},对于包含这两个List的RDD来说,他们进行一次intersection应该得到result={3,4,5} Spark的subtra…
spark的combineByKey combineByKey的特点 combineByKey的强大之处,在于提供了三个函数操作来操作一个函数.第一个函数,是对元数据处理,从而获得一个键值对.第二个函数,是对键值键值对进行一对一的操作,即一个键值对对应一个输出,且这里是根据key进行整合.第三个函数是对key相同的键值对进行操作,有点像reduceByKey,但真正实现又有着很大的不同. 在Spark入门(五)--Spark的reduce和reduceByKey中,我们用reduce进行求平均值…
[注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 .Spark编程模型 1.1 术语定义 l应用程序(Application): 基于Spark的用户程序,包含了一个Driver Program 和集群中多个的Executor: l驱动程序(Driver Program):运行Application的main()函数并且创建SparkContext,通常用SparkContext代表Driver Program: l执行单元(Executor):…
[注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 . 安装IntelliJ IDEA IDEA 全称 IntelliJ IDEA,是java语言开发的集成环境,IntelliJ在业界被公认为最好的java开发工具之一,尤其在智能代码助手.代码自动提示.重构.J2EE支持.Ant.JUnit.CVS整合.代码审查.创新的GUI设计等方面的功能可以说是超常的.IDEA是JetBrains公司的产品,这家公司总部位于捷克共和国的首都布拉格,开发人员以严谨…
[注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 .简介 1.1 Spark简介 年6月进入Apache成为孵化项目,8个月后成为Apache顶级项目,速度之快足见过人之处,Spark以其先进的设计理念,迅速成为社区的热门项目,围绕着Spark推出了Spark SQL.Spark Streaming.MLLib和GraphX等组件,也就是BDAS(伯克利数据分析栈),这些组件逐渐形成大数据处理一站式解决平台.从各方面报道来看Spark抱负并非池鱼,…
[注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 1. Spark运行架构 1.1 术语定义 lApplication:Spark Application的概念和Hadoop MapReduce中的类似,指的是用户编写的Spark应用程序,包含了一个Driver 功能的代码和分布在集群中多个节点上运行的Executor代码: lDriver:Spark中的Driver即运行上述Application的main()函数并且创建SparkContext…
[注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 .Spark Streaming简介 1.1 概述 Spark Streaming 是Spark核心API的一个扩展,可以实现高吞吐量的.具备容错机制的实时流数据的处理.支持从多种数据源获取数据,包括Kafk.Flume.Twitter.ZeroMQ.Kinesis 以及TCP sockets,从数据源获取数据之后,可以使用诸如map.reduce.join和window等高级函数进行复杂算法的处理…
[注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 .实例演示 1.1 流数据模拟器 1.1.1 流数据说明 在实例演示中模拟实际情况,需要源源不断地接入流数据,为了在演示过程中更接近真实环境将定义流数据模拟器.该模拟器主要功能:通过Socket方式监听指定的端口号,当外部程序通过该端口连接并请求数据时,模拟器将定时将指定的文件数据随机获取发送给外部程序. 1.1.2 模拟器代码 import java.io.{PrintWriter} import…
[注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 .机器学习概念 1.1 机器学习的定义 在维基百科上对机器学习提出以下几种定义: l“机器学习是一门人工智能的科学,该领域的主要研究对象是人工智能,特别是如何在经验学习中改善具体算法的性能”. l“机器学习是对能通过经验自动改进的计算机算法的研究”. l“机器学习是用数据或以往的经验,以此优化计算机程序的性能标准.” 一种经常引用的英文定义是:A computer program is said t…
[注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 .GraphX介绍 1.1 GraphX应用背景 Spark GraphX是一个分布式图处理框架,它是基于Spark平台提供对图计算和图挖掘简洁易用的而丰富的接口,极大的方便了对分布式图处理的需求. 众所周知·,社交网络中人与人之间有很多关系链,例如Twitter.Facebook.微博和微信等,这些都是大数据产生的地方都需要图计算,现在的图处理基本都是分布式的图处理,而并非单机处理.Spark G…
[注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 .MLlib实例 1.1 聚类实例 1.1.1 算法说明 聚类(Cluster analysis)有时也被翻译为簇类,其核心任务是:将一组目标object划分为若干个簇,每个簇之间的object尽可能相似,簇与簇之间的object尽可能相异.聚类算法是机器学习(或者说是数据挖掘更合适)中重要的一部分,除了最为简单的K-Means聚类算法外,比较常见的还有层次法(CURE.CHAMELEON等).网格…
[注] 1.该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取: 2.Spark编译与部署将以CentOS 64位操作系统为基础,主要是考虑到实际应用一般使用64位操作系统,内容分为三部分:基础环境搭建.Hadoop编译安装和Spark编译安装,该环境作为后续实验基础: 3.文章演示了Hadoop.Spark的编译过程,同时附属资源提供了编译好的安装包,觉得编译费时间可以直接使用这些编译好的安装包进行部署. 1.运行环境说明 1.1 硬软件环境 线程,主频…
[注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 .编译Hadooop 1.1 搭建环境 1.1.1 安装并设置maven 1. 下载maven安装包,建议安装3.0以上版本,本次安装选择的是maven3.0.5的二进制包,下载地址如下 http://mirror.bit.edu.cn/apache/maven/maven-3/ 2. 使用ssh工具把maven包上传到/home/hadoop/upload目录 3. 解压缩apache-maven…
[注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 .编译Spark .时间不一样,SBT是白天编译,Maven是深夜进行的,获取依赖包速度不同 2.maven下载大文件是多线程进行,而SBT是单进程),Maven编译成功前后花了3.4个小时. 1.1 编译Spark(SBT) 1.1.1 安装git并编译安装 1.  从如下地址下载git安装包 http://www.onlinedown.net/softdown/169333_2.htm http…
前言: CDH4不带yarn和spark, 因此需要自己搭建spark集群. 这边简单描述spark集群的安装过程, 并讲述spark的standalone模式, 以及对相关的脚本进行简单的分析. spark官网: http://spark.apache.org/downloads.html *)安装和部署 环境: 172.16.1.109~172.16.1.111三台机器(对应域名为tw-node109~tw-node111), centos6.4, 已部署cdh4 目标是: 搭建一个spar…
前言: spark最近非常的火热, 本文不讲spark原理, 而是研究spark集群搭建和服务的脚本是如何编写的, 管中窥豹, 希望从运行脚本的角度去理解spark集群. 研究的spark为1.0.1版. spark集群采用standalone模式搭建, 其基础架构为master-slave(worker模式, 单master+多slave(worker)节点构成. 脚本目录start-all.sh 作用: 启动整个集群stop-all.sh 作用: 关闭整个集群start-master.sh…
下面我们看一下图计算的简单示例: 从图我们可以看出, 拿到Wikipedia的文档后,我们可以: 1.Wikipedia的文档 -- > table视图 -- >分析Hyperlinks超链接 -- > PageRank分析, 2.Wikipedia的文档 -- > table视图 -- >分析Term-Doc Graph  -- > LDA  -- > WordTopics 3.Wikipedia的文档 -- >Editor Graph  -- >…
一.Spark的特点 Spark特性 Spark通过在数据处理过程中成本更低的洗牌(Shuffle)方式,将MapReduce提升到一个更高的层次.利用内存数据存储和接近实时的处理能力,Spark比其他的大数据处理技术的性能要快很多倍. Spark还支持大数据查询的延迟计算,这可以帮助优化大数据处理流程中的处理步骤.Spark还提供高级的API以提升开发者的生产力,除此之外还为大数据解决方案提供一致的体系架构模型. Spark将中间结果保存在内存中而不是将其写入磁盘,当需要多次处理同一数据集时,…
很多人一个误区,Spark SQL重点不是在SQL啊,而是在结构化数据处理! Spark SQL结构化数据处理 概要: 01 Spark SQL概述 02 Spark SQL基本原理 03 Spark SQL编程 04 分布式SQL引擎 05 用户自定义函数 06 性能调优   Spark SQL概述 Spark SQL是什么? Spark SQL is a Spark module for structured data processing 特别注意:.3.0 及后续版本中,SchemaRD…
本博文的主要内容: 1.Hash Shuffle彻底解密 2.Shuffle Pluggable解密 3.Sorted Shuffle解密 4.Shuffle性能优化 一:到底什么是Shuffle? Shuffle中文翻译为"洗牌",需要Shuffle的关键性原因是某种具有共同特征的数据需要最终汇聚到一个计算节点上进行计算. 二:Shuffle可能面临的问题? 运行Task的时候才会产生Shuffle(Shuffle已经融化在Spark的算子中了). 1. 数据量非常大:[几千甚至上万…
这次我们来一起学习MVC,这个专题分为两个小节,本次主要是总览以及模型,下一次着重会介绍视图以及控制器,因为控制器其实没有太多可以讲的,所以和视图合并在一块. 1 Model View Controller (MVC)的基本概念 MVC,对于大多数人说,这是一个讲烂了的概念.不过,既然这是一个入门系列,还是要稍微讲一讲. M 代表Model - 模型 一般用来管理数据层,比如绑定后台数据. V 代表View - 视图 一般用来处理展示层,比如具体前端UI的展示. C 代表Controller -…
Spark SQL 与传统 DBMS 的查询优化器 + 执行器的架构较为类似,只不过其执行器是在分布式环境中实现,并采用的 Spark 作为执行引擎. Spark SQL 的查询优化是Catalyst,其基于 Scala 语言开发,可以灵活利用 Scala 原生的语言特性很方便进行功能扩展,奠定了 Spark SQL 的发展空间. Catalyst 将 SQL 语言翻译成最终的执行计划,并在这个过程中进行查询优化.这里和传统不太一样的地方就在于, SQL 经过查询优化器最终转换为可执行的查询计划…
reduce和reduceByKey的区别 reduce和reduceByKey是spark中使用地非常频繁的,在字数统计中,可以看到reduceByKey的经典使用.那么reduce和reduceBykey的区别在哪呢?reduce处理数据时有着一对一的特性,而reduceByKey则有着多对一的特性.比如reduce中会把数据集合中每一个元素都处理一次,并且每一个元素都对应着一个输出.而reduceByKey则不同,它会把所有key相同的值处理并且进行归并,其中归并的方法可以自己定义. 例子…
spark的RDD操作 在上一节Spark经典的单词统计中,了解了几个RDD操作,包括flatMap,map,reduceByKey,以及后面简化的方案,countByValue.那么这一节将介绍更多常用的RDD操作,并且为每一种RDD我们分解来看其运作的情况. spark的flatMap flatMap,有着一对多的表现,输入一输出多.并且会将每一个输入对应的多个输出整合成一个大的集合,当然不用担心这个集合会超出内存的范围,因为spark会自觉地将过多的内容溢写到磁盘.当然如果对运行的机器的内…
spark经典之单词统计 准备数据 既然要统计单词我们就需要一个包含一定数量的文本,我们这里选择了英文原著<GoneWithTheWind>(<飘>)的文本来做一个数据统计,看看文章中各个单词出现频次如何.为了便于大家下载文本.可以到GitHub上下载文本以及对应的代码.我将文本放在项目的目录下. 首先我们要读取该文件,就要用到SparkContext中的textFile的方法,我们尝试先读取第一行. scala实现 import org.apache.spark.{SparkCo…
Scala是什么? Scala是以实现scaleable language为初衷设计出来的一门语言.官方中,称它是object-oriented language和functional language的混合式语言. Scala可以和java程序无缝拼接,因为scala文件编译后也是成为.class文件,并且在JVM上运行. Spark是由Scala进行开发的. Scala安装? 这里就讲一下Scala在Centos上进行安装的过程,和安装JDK差不多. 官网下载Scala:http://www…
前言 第1章   为什么Spark SQL? 第2章  Spark SQL运行架构 第3章 Spark SQL组件之解析 第4章 深入了解Spark SQL运行计划 第5章  测试环境之搭建 第6章 Spark SQL之基础应用 第7章 ThriftServer和CLI 第8章 Spark SQL之综合应用 第9章 Spark SQL之调优 第10章 总结 Spark SQL中的两个重要概念Tree和Rule.然后介绍一下Spark SQL的两个分支sqlContext和hiveContext…
前言 第1章   为什么Spark SQL? 第2章  Spark SQL运行架构 第3章 Spark SQL组件之解析 第4章 深入了解Spark SQL运行计划 第5章  测试环境之搭建 第6章 Spark SQL之基础应用 第7章 ThriftServer和CLI 第8章 Spark SQL之综合应用 第9章 Spark SQL之调优 第10章 总结 Spark SQL中的两个重要概念Tree和Rule.然后介绍一下Spark SQL的两个分支sqlContext和hiveContext…
Spark数据存储的核心是弹性分布式数据集(RDD). RDD可以被抽象地理解为一个大的数组(Array),但是这个数组是分布在集群上的. 逻辑上RDD的每个分区叫一个Partition. 在Spark的执行过程中,RDD经历一个个的Transfomation算子之后,最后通过Action算子进行触发操作. 逻辑上每经历一次变换,就会将RDD转换为一个新的RDD,RDD之间通过Lineage产生依赖关系,这个关系在容错中有很重要的作用. 变换的输入和输出都是RDD.RDD会被划分成很多的分区分布…
Spark的算子的分类 从大方向来说,Spark 算子大致可以分为以下两类: 1)Transformation 变换/转换算子:这种变换并不触发提交作业,完成作业中间过程处理. Transformation 操作是延迟计算的,也就是说从一个RDD 转换生成另一个 RDD 的转换操作不是马上执行,需要等到有 Action 操作的时候才会真正触发运算. 2)Action 行动算子:这类算子会触发 SparkContext 提交 Job 作业.   Action 算子会触发 Spark 提交作业(Jo…