大数据开发人员,根据企业大数据处理的需求,进行大数据平台系统的搭建,比如说Hadoop,比如说Spark,而不同的大数据处理框架,采取不同的编程语言和编程模型,这就需要技术开发人员要掌握相关的技术。今天我们以Spark开发为例,来分享一下Spark大数据开发当中的一些编程示例。
Spark框架的核心思想,还是基于分布式架构,并且计算模式继承了MapReduce,并在此基础之上进行了扩展,支持更多的计算模式,以满足更多的大数据应用场景需求。
Spark程序架构,严格来说还是按照分布式架构来的,所有Spark开发,严格来说属于分布式编程。Spark程序工作时通常最少2个进程,有且只有两个角色driver和executor。
Spark程序开发的流程,一般有以下三个步骤:
1、本地ide开发逻辑,并使用local[*]进行调试
2、部署集群使用spark-client进行测试(可能没有)
3、部署集群使用spark-cluster实际部署
一般开发一个spark程序都要走上面的3个步骤,但是有些非常奇怪的现象是,步骤1没问题,但是实际到集群部署,到了2和3就出错,这是为什么呢?
主要的原因是因为读取的配置参数和预期不符合,常见错误和问题:
submit提交后出现
java.lang.NullPointerException
Not Serializable
另外,Spark程序模型实质是分布式编程,两个角色driver和executor之间如何实现信息传递呢?
首先,信息收集到driver
通常都是用spark自己提供的action算子。
然后,信息下发到executor
这种情况很常见几乎每个程序都会用到,具体分为启动初始化时参数传递和允许中传递:
①利用闭包特性(高大上,驾驭有难度,各种跨进程rpc编程,分布式编程框架所使用,缺点是由于jvm专用,一般在启动初始化时传递)
②利用--files传递配置文件,executor通过lazy读取
③利用spark的广播功能,注意可序列化,属于允许中传递
④利用spark-submit和yarn机制
关于Spark开发,以上就是给到大家的一个简单的编程示例介绍,作为大数据领域重要的计算框架掌握Spark开发是必须的技能,也建议大家在学习阶段予以重视,做到牢牢掌握。成都加米谷大数据,大数据技术知识分享,专业
大数据培训班每月开班中,详情可联系客服了解!