Spark 概念学习系列之Spark 多语言编程
不多说,直接上干货!
Spark 同时支持Scala、Python、Java 三种应用程序API编程接口和编程方式, 考虑到大数据处理的特性,一般会优先使用Scala进行编程,其次是Python,最后才是Java。 无论使用Scala、Python还是Java编程程序都需要遵循Spark 编程模型,考虑对Spark平台支持的有力程度来说,Spark 对Scala语言的支持是最好的,因为它有最丰富的和最易用的编程接口。
Spark 多语言编程的简介
Spark 目前支持Scala、Python、Java三种编程语言。
Scala 作为Spark的原生语言,代码优雅、简洁而且功能完善,很多开发者都比较认可,它是业界广泛使用的Spark程序开发语言。
Spark 也提供了Python的编程模型PySpark,使得Python可以作为Spark开发语言之一。 尽管现在PySpark还不能支持所有的Spark API,但是以后的支持度会越来越高。
Java 也可以作为Spark的开发语言之一,但是相对于前两者而已,逊色了很多。但是Java8却很好地适应了Spark的开发风格,大家有兴趣可以自行了解。
Spark 多语言编程的误解
spark对多语言的支持,并不是说spark可以操作各个语言写的程序。 而是各种语言可以使用spark提供的编程模型来开发spark程序,并连接 spark集群来运行开发好的app。
前面我已经些了使用Scala、Java语言开发Spark程序,接下来我重点给大家写此博文了解一下Python的编程模型。
Spark编程环境搭建(基于Intellij IDEA的Ultimate版本)(包含Java和Scala版的WordCount)(博主强烈推荐)
使用python来开发spark app
Spark 公开了Python的编程模型--PySpark,开发者可以通过PySpark很容易地开发Spark 应用程序。
但是Python API和Scala API并不完全相同:
1)Python是动态语言,RDD 可以持有不同类型的对象。
2)PySpark 目前并没有支持全部的API,但核心部分已经全部支持。
3)在PySpark里,RDD支持和Scala一样的方法,只不过这些方法是Python函数来实现的,返回的也是Python的集合类型;对于RDD方法中使用的短函数,则可以使用Python的Lambda语法实现。
不过,使用Python开发Spark应用程序也有很多优势,比如说不需要编译,使用方便,还可以与许多系统集成,特别是NoSQL大部分都提供了Python开发包。
接下来我带大家一起使用Python语言开发Spark App。
● IDE
这里选择pycharm
http://www.jetbrains.com/products.html#lang=python
● 安装python
● 创建python项目
● 引入依赖的模块
pyspark
py4j
Spark 概念学习系列之Spark 多语言编程的更多相关文章
- Spark 概念学习系列之Spark基本概念和模型(十八)
打好基础,别小瞧它! spark的运行模式多种多样,在单机上既可以本地模式运行,也可以伪分布模式运行.而当以分布式的方式在集群中运行时.底层的资源调度可以使用Mesos或者Yarn,也可使用spark ...
- Spark 概念学习系列之Spark存储管理机制
Spark存储管理机制 概要 01 存储管理概述 02 RDD持久化 03 Shuffle数据存储 04 广播变量与累加器 01 存储管理概述 思考: RDD,我们可以直接使用而无须关心它的实现细节, ...
- Spark 概念学习系列之Spark Core(十五)
不多说,直接上干货! 最关键的是转换算子Transformations和缓存算子Actions. 主要是对RDD进行操作. RDD Objects -> Scheduler(DAGSched ...
- Spark SQL概念学习系列之Spark SQL概述
很多人一个误区,Spark SQL重点不是在SQL啊,而是在结构化数据处理! Spark SQL结构化数据处理 概要: 01 Spark SQL概述 02 Spark SQL基本原理 03 Spark ...
- Spark RDD概念学习系列之Spark的算子的作用(十四)
Spark的算子的作用 首先,关于spark算子的分类,详细见 http://www.cnblogs.com/zlslch/p/5723857.html 1.Transformation 变换/转换算 ...
- Spark RDD概念学习系列之Spark Hash Shuffle内幕彻底解密(二十)
本博文的主要内容: 1.Hash Shuffle彻底解密 2.Shuffle Pluggable解密 3.Sorted Shuffle解密 4.Shuffle性能优化 一:到底什么是Shuffle? ...
- Spark Streaming概念学习系列之Spark Streaming容错
Spark Streaming容错 检查点机制-checkpoint 什么是检查点机制? Spark Streaming 周期性地把应用数据存储到诸如HDFS 或Amazon S3 这样的可靠存储系统 ...
- Spark SQL概念学习系列之Spark SQL 架构分析(四)
Spark SQL 与传统 DBMS 的查询优化器 + 执行器的架构较为类似,只不过其执行器是在分布式环境中实现,并采用的 Spark 作为执行引擎. Spark SQL 的查询优化是Catalyst ...
- Spark 概念学习系列之从物理执行的角度透视spark Job(十七)
本博文主要内容: 1.再次思考pipeline 2.窄依赖物理执行内幕 3.宽依赖物理执行内幕 4.Job提交流程 一:再次思考pipeline 即使采用pipeline的方式,函数f对依赖的RDD ...
随机推荐
- HIVE JOIN_1
HIVE JOIN 概述 Hive join的实现包含了: Common (Reduce-side) Join Broadcast (Map-side) Join Bucket Map Join So ...
- Semi-Prime(半素数)
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2723 Semi-Prime Time Limit: 2 Seconds ...
- Python正则表达式初识(七)
继续分享Python正则表达式的基础知识,今天给大家分享的特殊字符是“\s”.“\S”,具体的教程如下. 1.“\s”代表的意思是匹配空格,匹配模式“加\s油”代表的是字符“加”和“油”之间有空格的意 ...
- Node测试文章收藏
1.Nodejs实战—测试Node程序 讲解了TDD与BDD,TDD的基本原则,单元测试常用框架及使用,例如assert断言库, chai断言库, should.js断言库,断言库搭配测试框架(m ...
- CSUOJ 1542 Flipping Parentheses
ACM International Collegiate Programming Contest Asia Regional Contest, Tokyo, 2014–10–19 Problem G ...
- 洛谷 P1900 自我数
P1900 自我数 题目描述 在1949年印度数学家D. R. Daprekar发现了一类称作Self-Numbers的数.对于每一个正整数n,我们定义d(n)为n加上它每一位数字的和.例如,d(75 ...
- Android Studio升级到0.8.1后怎样设置字体大小?
升级到0.8.1后.打开设置字体大小页面.你会发现无论是Default还是Darcula,都不同意你改变字体的大小.事实上这个是由于这两个模式是Android Studio自带模式,所以不同意你修改, ...
- Activity 之间 传递 List 封装的对象或者对象
项目中遇到 从也个页面向还有一个页面跳转传递一个List 封装的对象 .按网上查的资料 须要把 对象 实现 Serializable接口. 写了一下.可是跳转直接崩溃.一直看错误之日找不到原因后来自习 ...
- JavaScript中操作对象的属性
1.操作对象的属性 注意: 标签属性与DOM对象属性的相应关系: 绝大部分2者是同样的.如:imgobj.src属性相应<img src="" >中src属性,但也有例 ...
- c#数据类型格式转换大全
来源:网络 1.DateTime 数字型 System.DateTime currentTime=new System.DateTime(); 1.1 取当前年月日时分秒 ...