有了Hadoop MapReduce, 为什么还要Spark?
a. 由于MapReduce的shuffle过程需写磁盘,比较影响性能;而Spark利用RDD技术,计算在内存中进行.
b. MapReduce计算框架(API)比较局限, 而Spark则是具备灵活性的并行计算框架.
c. 再说说Spark API方面- Scala: Scalable Language, 据说是进行并行计算的最好的语言. 与Java相比,极大的减少代码量.
From http://coderzhang.com/%e5%85%b3%e4%ba%8e%e7%bc%96%e7%a8%8b%e8%af%ad%e8%a8%80%e7%9a%84%e4%b8%80%e7%82%b9%e6%80%9d%e8%80%83/ scala则是为了适应java程序员的需求,做了很多的变通,当然也是为了拉拢java程序员。 scala的代码写出来可以咋一看跟java代码一样,有很多语法糖来简化java代码的书写复杂度,也很方便的支持了不可变变量。然后就宣称函数式,开发效率高,支持高并发编程。不过我觉得使他受欢迎的并不是这三点,而是可以使java程序员快速上手,已写java的方式写scala。这才是他逐渐流行的关键,写scala对java程序员来说是一件很cool的事情,而且也很容易上手,何乐而不为呢。 再说说流行的java,java应该是在各种语言里比较接近自然语言的一种,这也应该是他流行已久的一个重要原因。自然语言的一个最大的弊端就是描述事情的复杂性,到java就是书写代码的复杂性。就像法律文书什么的,说一个事情总是会有很多上下文,使用最没有歧义的自然语言说清楚一件没有歧义的事总是困难的。java也面临同样的问题。 scala想通过语法糖解决这个问题,就像是用河南话表达上海话的意思,字虽然少了,毕竟只是换一种说法,无法解决自然语言的问题。
DataFrame
就易用性而言,对比传统的MapReduce API,说Spark的RDD API有了数量级的飞跃并不为过。然而,对于没有MapReduce和函数式编程经验的新手来说,RDD API仍然存在着一定的门槛。另一方面,数据科学家们所熟悉的R、Pandas等传统数据框架虽然提供了直观的API,却局限于单机处理,无法胜任大数据场景。为了解决这一矛盾,Spark SQL 1.3.0在原有SchemaRDD的基础上提供了与R和Pandas风格类似的DataFrame API。新的DataFrame AP不仅可以大幅度降低普通开发者的学习门槛,同时还支持Scala、Java与Python三种语言。更重要的是,由于脱胎自SchemaRDD,DataFrame天然适用于分布式大数据场景。
DataFrame是什么?
在Spark中,DataFrame是一种以RDD为基础的分布式数据集,类似于传统数据库中的二维表格。DataFrame与RDD的主要区别在于,前者带有schema元信息,即DataFrame所表示的二维表数据集的每一列都带有名称和类型。这使得Spark SQL得以洞察更多的结构信息,从而对藏于DataFrame背后的数据源以及作用于DataFrame之上的变换进行了针对性的优化,最终达到大幅提升运行时效率的目标。反观RDD,由于无从得知所存数据元素的具体内部结构,Spark Core只能在stage层面进行简单、通用的流水线优化。

有了Hadoop MapReduce, 为什么还要Spark?的更多相关文章
- Hadoop MapReduce Task的进程模型与Spark Task的线程模型
Hadoop的MapReduce的Map Task和Reduce Task都是进程级别的:而Spark Task则是基于线程模型的. 多进程模型和多线程模型 所谓的多进程模型和多线程模型,指的是同一个 ...
- 谈谈Hadoop MapReduce和Spark MR实现
谈谈MapReduce的概念.Hadoop MapReduce和Spark基于MR的实现 什么是MapReduce? MapReduce是一种分布式海量数据处理的编程模型,用于大规模数据集的并行运算. ...
- 大数据技术生态圈形象比喻(Hadoop、Hive、Spark 关系)
[摘要] 知乎上一篇很不错的科普文章,介绍大数据技术生态圈(Hadoop.Hive.Spark )的关系. 链接地址:https://www.zhihu.com/question/27974418 [ ...
- 一文看懂大数据的技术生态圈,Hadoop,hive,spark都有了
一文看懂大数据的技术生态圈,Hadoop,hive,spark都有了 转载: 大数据本身是个很宽泛的概念,Hadoop生态圈(或者泛生态圈)基本上都是为了处理超过单机尺度的数据处理而诞生的.你可以把它 ...
- [转帖]Hadoop、Hive、Spark 之间关系
Hadoop.Hive.Spark 之间关系 https://www.cnblogs.com/jins-note/p/9513426.html 很的很诙谐有趣. 作者:Xiaoyu Ma ,大数据工程 ...
- hadoop MapReduce Yarn运行机制
原 Hadoop MapReduce 框架的问题 原hadoop的MapReduce框架图 从上图中可以清楚的看出原 MapReduce 程序的流程及设计思路: 首先用户程序 (JobClient) ...
- Hadoop MapReduce编程学习
一直在搞spark,也没时间弄hadoop,不过Hadoop基本的编程我觉得我还是要会吧,看到一篇不错的文章,不过应该应用于hadoop2.0以前,因为代码中有 conf.set("map ...
- Hadoop MapReduce开发最佳实践(上篇)
body{ font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI& ...
- 从分治算法到 Hadoop MapReduce
从分治算法说起 要说 Hadoop MapReduce 就不得不说分治算法,而分治算法其实说白了,就是四个字 分而治之 .其实就是将一个复杂的问题分解成多组相同或类似的子问题,对这些子问题再分,然后再 ...
随机推荐
- 菜鸟日记-HTML
第一部分 HTML---Hyper Text Markup Language--超文本标记语言 1.HTML标准:<html> <head> 网页上的控制信息 <tit ...
- mysql忘记密码重置(mac)
setp1: 苹果->系统偏好设置->最下边点mysql 在弹出页面中 关闭mysql服务(点击stop mysql server) step2:进入终端输入:cd /usr/local/ ...
- U盘启动笔记本无法安装Win7问题和解决
用“大白菜”工具制作启动U盘,从U盘启动后进入Win PE环境安装Win7,提示“安装win7系统安装程序无法创建新的系统分区,也无法定位现有系统分区”.经以下各种努力后仍无法正常安装: 在BIOS里 ...
- C#:WebBrowser中伪造referer,为何对流量统计器无效?
使用webbrowser伪造referer的方法:webBrowser1.Navigate(url, "_self", null, "Referer:http://www ...
- android 开发 简单的页面布局
package com.example.test; import android.app.Activity; import android.os.Bundle; import android.view ...
- supervisor监控gearman任务
安装supervisor方法,可以直接用 yum install supervisord ,但是版本可能会旧一点,可以参考官方的方法: easy_install supervisor http://s ...
- 《CSS 设计指南》学习笔记 一
本篇文章是对这几天看完 Charles Wyke-Smit 的 <CSS 设计指南> 后的一些学习笔记与心得,笔者好像是大一的时候开始接触网页设计,由于并不是计算机专业的,所以所有都是自己 ...
- nginx-upstream-keepalive;accept_mutex-proxy_http_version-1.1-proxy_set_header-connection
nginx+resin+redis+mysql的架构: 有外部模拟用户请求的大量攻击:它尝试请求了80就断开:看到的现象是在跑有nginx80的主机上TCP连接数少 : ESTABLISHED少: 在 ...
- 使用cxf开发webservice应用时抛出异常
在使用cxf开发webservice应用时,报出了类似下面的错误 JAXB: [javax.xml.bind.UnmarshalException: unexpected element (uri:& ...
- 学习之路三十六:SQL知识总结 - [游标||字符串分割]
好久没有写文章了,今天把前不久项目用到的SQL知识总结一下. 一丶字符串分割 SQL内置函数中是没有Split分割函数的,所以需要自己去实现,不多说,上代码: )) RETURNS @result T ...