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

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

git clone https:// github.com/apache/spark

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

$ sbt/sbt clean assembly 

这时的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

时间: 2024-10-31 20:53:40

《Spark大数据分析实战》——2.3节Spark编译的相关文章

《Spark大数据分析实战》——3.1节SQL on Spark

3.1 SQL on Spark AMPLab将大数据分析负载分为三大类型:批量数据处理.交互式查询.实时流处理.而其中很重要的一环便是交互式查询.大数据分析栈中需要满足用户ad-hoc.reporting.iterative等类型的查询需求,也需要提供SQL接口来兼容原有数据库用户的使用习惯,同时也需要SQL能够进行关系模式的重组.完成这些重要的SQL任务的便是Spark SQL和Shark这两个开源分布式大数据查询引擎,它们可以理解为轻量级Hive SQL在Spark上的实现,业界将该类技术

《Spark大数据分析实战》——3.3节GraphX

3.3 GraphX GraphX是Spark中的一个重要子项目,它利用Spark作为计算引擎,实现了大规模图计算的功能,并提供了类似Pregel的编程接口.GraphX的出现,将Spark生态系统变得更加完善和丰富:同时以其与Spark生态系统其他组件很好的融合,以及强大的图数据处理能力,在工业界得到了广泛的应用.本章主要介绍GraphX的架构.原理和使用方式.3.3.1 GraphX简介 GraphX是常用图算法在Spark上的并行化实现,同时提供了丰富的API接口.图算法是很多复杂机器学习

《Spark大数据分析实战》——1.2节Spark生态系统BDAS

1.2 Spark生态系统BDAS 目前,Spark已经发展成为包含众多子项目的大数据计算平台.BDAS是伯克利大学提出的基于Spark的数据分析栈(BDAS).其核心框架是Spark,同时涵盖支持结构化数据SQL查询与分析的查询引擎Spark SQL,提供机器学习功能的系统MLBase及底层的分布式机器学习库MLlib,并行图计算框架GraphX,流计算框架Spark Streaming,近似查询引擎BlinkDB,内存分布式文件系统Tachyon,资源管理框架Mesos等子项目.这些子项目在

《Spark大数据分析实战》——3.2节Spark Streaming

3.2 Spark StreamingSpark Streaming是一个批处理的流式计算框架.它的核心执行引擎是Spark,适合处理实时数据与历史数据混合处理的场景,并保证容错性.下面将对Spark Streaming进行详细的介绍.3.2.1 Spark Streaming简介Spark Streaming是构建在Spark上的实时计算框架,扩展了Spark流式大数据处理能力.Spark Streaming将数据流以时间片为单位进行分割形成RDD,使用RDD操作处理每一块数据,每块数据(也就

《Spark大数据分析实战》——1.3节Spark架构与运行逻辑

1.3 Spark架构与运行逻辑 1.?Spark的架构 Driver:运行Application的main()函数并且创建SparkContext. Client:用户提交作业的客户端. Worker:集群中任何可以运行Application代码的节点,运行一个或多个Executor进程. Executor:运行在Worker的Task执行器,Executor启动线程池运行Task,并且负责将数据存在内存或者磁盘上.每个Application都会申请各自的Executor来处理任务. Spar

《Spark大数据分析实战》——2.2节远程调试Spark程序

2.2 远程调试Spark程序 本地调试Spark程序和传统的调试单机的Java程序基本一致,读者可以参照原来的方式进行调试,关于单机调试本书暂不赘述.对于远程调试服务器上的Spark代码,首先请确保在服务器和本地的Spark版本一致.需要按前文介绍预先安装好JDK和Git. (1)编译Spark 在服务器端和本地计算机下载Spark项目. 通过下面的命令克隆一份Spark源码: git clone https:// github.com/apache/spark 然后针对指定的Hadoop版本

《Spark大数据分析实战》——3.5节本章小结

3.5 本章小结本章主要介绍了BDAS中广泛应用的几个数据分析组件.SQL on Spark提供在Spark上的SQL查询功能.让用户可以基于内存计算和SQL进行大数据分析.通过Spark Streaming,用户可以构建实时流处理应用,其高吞吐量,以及适合历史和实时数据混合分析的特性使其在流数据处理框架中突出重围.GraphX充当Spark生态系统中图计算的角色,其简洁的API让图处理算法的书写更加便捷.最后介绍了MLlib--Spark上的机器学习库,它充分利用Spark内存计算和适合迭代的

《Spark大数据分析实战》——第2章Spark开发与环境配置

第2章Spark开发与环境配置用户进行Spark应用程序开发,一般在用户本地进行单机开发调试,之后再将作业提交到集群生产环境中运行.下面将介绍Spark开发环境的配置,如何编译和进行源码阅读环境的配置.用户可以在官网上下载最新的AS软件包,网址为:http://spark.apache.org/.

《Spark大数据分析实战》——2.5节本章小结

2.5 本章小结本章首先介绍了Spark应用程序的开发流程以及如何编译和调试Spark程序.用户可以选用对Scala项目能够很好支持的Intellij IDE.如果用户想深入了解Spark,以及诊断问题,建议读者配置好源码阅读环境,进行源码分析.通过本章的介绍,读者可以进行Spark开发环境的搭建,以及程序的开发,后续将介绍Spark的生态系统BDAS.