《Spark大数据分析实战》——2.3节Spark编译

简介:

本节书摘来自华章社区《Spark大数据分析实战》一书中的第2章,第2.3节Spark编译,作者高彦杰 倪亚宇,更多章节内容可以访问云栖社区“华章社区”公众号查看

2.3 Spark编译
用户可以通过Spark的默认构建工具SBT进行源码的编译和打包。当用户需要对源码进行二次开发时,则需要对源码进行增量编译,通过下面的方式读者可以实现编译和增量编译。
(1)克隆Spark源码
可通过克隆的方式克隆Spark源码,如图2-9所示。

git clone https:// github.com/apache/spark
AI 代码解读


730c8df0f58f32ff5ae42e06dd4bc70917f0e651

这样将会从github将Spark源码下载到本地,建立本地的仓库。
(2)编译Spark源码
在Spark项目的根目录内执行编译和打包命令(如图2-10所示)。
sbt/sbt assembly
执行过程中会解析依赖和下载需要的依赖jar包。执行完成后会将所有jar包打包为一个jar包,用户便可以运行Spark集群和示例了。
(3)增量编译
在有些情况下,用户需要修改源码,修改之后如果每次都重新下载jar包或者对全部源码重新编译一遍,会很浪费时间,用户通过下面的增量编译方法,可以只对改变的源码进行编译。
编译打包一个assembly的jar包。

$ sbt/sbt clean assembly 
AI 代码解读


3fe0be0ef1aedc4689729419753e49846c2ec6d5

这时的Spark程序已经可以运行。用户可以进入spark-shell执行程序。

$ ./bin/spark-shell 
配置export SPARK_PREPEND_CLASSES参数为true,开启增量编译模式。
$ export SPARK_PREPEND_CLASSES=true
继续使用spark-shell中的程序:
$ ./bin/spark-shell 
这时用户可以对代码进行修改和二次开发:初始开发Spark应用,之后编译。
编译Spark源码:
$ sbt/sbt compile
继续开发Spark应用,之后编译。
$ sbt/sbt compile
解除增量编译模式:
$ unset SPARK_PREPEND_CLASSES
返回正常使用spark-shell的情景。
$ ./bin/spark-shell # Back to normal, using Spark classes from the assembly Jar
如果用户不想每次都开启一个新的SBT会话,可以在compile命令前加上~。
$ sbt/sbt ~ compile
(4)查看Spark源码依赖图
如果使用SBT进行查看依赖图(如图2-11所示),用户需要运行下面的命令:
$ # sbt
$ sbt/sbt dependency-tree
如果使用Maven进行查看依赖图(如图2-11所示),用户需要运行下面的命令:
$ # Maven
$ mvn -DskipTests install
$ mvn dependency:tree
AI 代码解读


83f1b6bf26ee22251c4f0a65452819bb2727d1ab
目录
打赏
0
0
0
0
1408
分享
相关文章
从“笨重大象”到“敏捷火花”:Hadoop与Spark的大数据技术进化之路
从“笨重大象”到“敏捷火花”:Hadoop与Spark的大数据技术进化之路
148 79
ClickHouse与大数据生态集成:Spark & Flink 实战
【10月更文挑战第26天】在当今这个数据爆炸的时代,能够高效地处理和分析海量数据成为了企业和组织提升竞争力的关键。作为一款高性能的列式数据库系统,ClickHouse 在大数据分析领域展现出了卓越的能力。然而,为了充分利用ClickHouse的优势,将其与现有的大数据处理框架(如Apache Spark和Apache Flink)进行集成变得尤为重要。本文将从我个人的角度出发,探讨如何通过这些技术的结合,实现对大规模数据的实时处理和分析。
358 2
ClickHouse与大数据生态集成:Spark & Flink 实战
数据湖技术:Hadoop与Spark在大数据处理中的协同作用
【10月更文挑战第27天】在大数据时代,数据湖技术凭借其灵活性和成本效益成为企业存储和分析大规模异构数据的首选。Hadoop和Spark作为数据湖技术的核心组件,通过HDFS存储数据和Spark进行高效计算,实现了数据处理的优化。本文探讨了Hadoop与Spark的最佳实践,包括数据存储、处理、安全和可视化等方面,展示了它们在实际应用中的协同效应。
279 2
数据湖技术:Hadoop与Spark在大数据处理中的协同作用
【10月更文挑战第26天】本文详细探讨了Hadoop与Spark在大数据处理中的协同作用,通过具体案例展示了两者的最佳实践。Hadoop的HDFS和MapReduce负责数据存储和预处理,确保高可靠性和容错性;Spark则凭借其高性能和丰富的API,进行深度分析和机器学习,实现高效的批处理和实时处理。
244 1
阿里云MaxCompute-XGBoost on Spark 极限梯度提升算法的分布式训练与模型持久化oss的实现与代码浅析
本文介绍了XGBoost在MaxCompute+OSS架构下模型持久化遇到的问题及其解决方案。首先简要介绍了XGBoost的特点和应用场景,随后详细描述了客户在将XGBoost on Spark任务从HDFS迁移到OSS时遇到的异常情况。通过分析异常堆栈和源代码,发现使用的`nativeBooster.saveModel`方法不支持OSS路径,而使用`write.overwrite().save`方法则能成功保存模型。最后提供了完整的Scala代码示例、Maven配置和提交命令,帮助用户顺利迁移模型存储路径。
AnalyticDB与大数据生态集成:Spark & Flink
【10月更文挑战第25天】在大数据时代,实时数据处理和分析变得越来越重要。AnalyticDB(ADB)是阿里云推出的一款完全托管的实时数据仓库服务,支持PB级数据的实时分析。为了充分发挥AnalyticDB的潜力,将其与大数据处理工具如Apache Spark和Apache Flink集成是非常必要的。本文将从我个人的角度出发,分享如何将AnalyticDB与Spark和Flink集成,构建端到端的大数据处理流水线,实现数据的实时分析和处理。
136 1
大数据实战之spark安装部署
楔子 我是在2013年底第一次听说Spark,当时我对Scala很感兴趣,而Spark就是使用Scala编写的。一段时间之后,我做了一个有趣的数据科学项目,它试着去预测在泰坦尼克号上幸存。
3106 0
大数据-106 Spark Graph X 计算学习 案例:1图的基本计算、2连通图算法、3寻找相同的用户
大数据-106 Spark Graph X 计算学习 案例:1图的基本计算、2连通图算法、3寻找相同的用户
119 0
大数据-104 Spark Streaming Kafka Offset Scala实现Redis管理Offset并更新
大数据-104 Spark Streaming Kafka Offset Scala实现Redis管理Offset并更新
90 0
大数据-103 Spark Streaming Kafka Offset管理详解 Scala自定义Offset
大数据-103 Spark Streaming Kafka Offset管理详解 Scala自定义Offset
140 0

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等