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层面进行简单、通用的流水线优化。

最新文章

  1. Servlet解决参数乱码问题
  2. opensuse sublime 配置
  3. oop、configparser、xml模块
  4. STM32硬件调试详解
  5. SIP学习之网络链接
  6. css系列:input的placeholder在safari下设置行高失效
  7. Linux环境g++编译TinyXML动态库
  8. rpm安装查看卸载软件
  9. 在linux上安装svn
  10. .NET Framework 4 与.NET Framework 4 Client Profile有什么区别?
  11. 驱动笔记 - platform中断程序
  12. IOS开发之Storyboard应用
  13. nmap扫描内网存活机器脚本
  14. Nginx+tomcat+redis实现session共享
  15. html5 如何实现客户端验证上传文件的大小
  16. kotlin正式由Goole公布为Android的最新开发语言
  17. 仿照Chome的GhostPage调试功能
  18. 织梦dedecms 无法下载远程图片 fsockopen函数被禁用的解决方法
  19. 并发编程——IO模型(6)
  20. Paxos算法学习

热门文章

  1. paip.java 多线程参数以及返回值Future FutureTask 的使用.
  2. Atitit.dwr3 不能显示错误详细信息的解决方案,控件显示错误详细信息的解决方案 java .net php
  3. atitit js 开发工具 ide的代码结构显示(func list) outline总结
  4. java基础接口练习
  5. Jenkins + GitHub + fir-cli 一行命令从源码到fir.im
  6. iOS开发---iPhone SDK 包含哪些东西?
  7. Leetcode 21 Merge Two Sorted Lists 链表
  8. WordPress安装使用问题记录
  9. 统计项目的java代码总行数
  10. 创建一个Windows的NTP Server