《Spark大数据分析实战》——2.1节Spark应用开发环境配置

简介:

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

2.1 Spark应用开发环境配置
Spark的开发可以通过Intellij或者Eclipse IDE进行,在环境配置的开始阶段,还需要安装相应的Scala插件。
2.1.1 使用Intellij开发Spark程序
本节介绍如何使用Intellij IDEA构建Spark开发环境和源码阅读环境。由于Intellij对Scala的支持更好,目前Spark开发团队主要使用Intellij作为开发环境。
1.?配置开发环境
(1)安装JDK
用户可以自行安装JDK8。官网地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html
下载后,如果在Windows下直接运行安装程序,会自动配置环境变量,安装成功后,在CMD的命令行下输入Java,有Java版本的日志信息提示则证明安装成功。
如果在Linux下安装,下载JDK包解压缩后,还需要配置环境变量。
在/etc/prof?ile文件中,配置环境变量:

export JAVA_HOME=/usr/java/jdk1.8
export JAVA_BIN=/usr/java/jdk1.8/bin
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME JAVA_BIN PATH CLASSPATH

(2)安装Scala
Spark内核采用Scala进行开发,上层通过封装接口提供Java和Python的API,在进行开发前需要配置好Scala的开发包。
Spark对Scala的版本有约束,用户可以在Spark的官方下载界面看到相应的Scala版本号。下载指定的Scala包,官网地址:http://www.scala-lang.org/download/
(3)安装Intellij IDEA
用户可以下载安装最新版本的Intellij,官网地址:http://www.jetbrains.com/idea/download/
目前Intellij最新的版本中已经可以支持新建SBT工程,安装Scala插件,可以很好地支持Scala开发。
(4)Intellij中安装Scala插件
在Intellij菜单中选择“Conf?igure”,在下拉菜单中选择“Plugins”,再选择“Browse repositories”,输入“Scala”搜索插件(如图2-1所示),在弹出的对话框中单击“install”按钮,重启Intellij。
2.?配置Spark应用开发环境
1)用户在Intellij IDEA中创建Scala Project, SparkTest。
2)选择菜单中的“File”→“project structure”→“Libraries”命令,单击“+”,导入“spark-assembly_2.10-1.0.0-incubating-hadoop2.2.0.jar”。
只需导入该jar包,该包可以通过在Spark的源码工程下执行“sbt/sbt assembly”命令生成,这个命令相当于将Spark的所有依赖包和Spark源码打包为一个整体。
在“assembly/target/scala-2.10.4/”目录下生成:spark-assembly-1.0.0-incubating-hadoop2.2.0.jar。
3)如果IDE无法识别Scala库,则需要以同样方式将Scala库的jar包导入。之后就可以开始开发Spark程序。如图2-2所示,本例将Spark默认的示例程序SparkPi复制到文件。


64a5cff9b0fa9e16d0260c4fc272c3382135c0be

3.?运行Spark程序
(1)本地运行
编写完scala程序后,可以直接在Intellij中,以本地Local模式运行(如图2-3所示),方法如下。


e54104e29dcd6535325c8c11ab23dfb25df4fa40

在Intellij中的选择“Run”→“Debug Conf?iguration”→“Edit Conf?igurations”命令。在“Program arguments”文本框中输入main函数的输入参数local。然后右键选择需要运行的类,单击“Run”按钮运行。
(2)集群上运行Spark应用jar包
如果想把程序打成jar包,通过命令行的形式运行在Spark集群中,并按照以下步骤操作。
1)选择“File”→“Project Structure”,在弹出的对话框中选择“Artifact”→
“Jar”→“From Modules with dependencies”命令。
2)在选择“From Modules with dependencies”之后弹出的对话框中,选择Main函数,同时选择输出jar位置,最后单击“OK”按钮。
具体如图2-4~图2-6所示。
在图2-5中选择需要执行的Main函数。
在图2-6界面选择依赖的jar包。


2ccbcad1b66b8a4d9159c8b97bb4dc2a715c0e60


bb3928036dfb45173671c16c5067a542f64e8530

在主菜单选择“Build”→“Build Artifact”命令,编译生成jar包。
3)将生成的jar包SparkTest.?jar在集群的主节点,通过下面命令执行:
java -jar SparkTest.jar
用户可以通过上面的流程和方式通过Intellij作为集成开发环境进行Spark程序的开发。
2.1.2 使用SparkShell进行交互式数据分析
如果是运行Spark Shell,那么会默认创建一个SparkContext,命名为sc,所以不需要在Spark Shell创建新的SparkContext,SparkContext是应用程序的上下文,调度整个应用并维护元数据信息。在运行Spark Shell之前,可以设定参数MASTER,将Spark应用提交到MASTER指向的相应集群或者本地模式执行,集群方式运行的作业将会分布式地运行,本地模式执行的作业将会通过单机多线程方式运行。可以通过参数ADD_JARS把JARS添加到classpath,用户可以通过这种方式添加所需的第三方依赖库。
如果想spakr-shell在本地4核的CPU运行,需要如下方式启动:

$MASTER=local[4] ./spark-shell
这里的4是指启动4个工作线程。
如果要添加JARS,代码如下:
$MASTER=local[4]  ADD_JARS=code.jar ./spark-shell
在spark-shell中,输入下面代码,读取dir文件:
scala>val text=sc.textFile("dir")
输出文件中有多少数据项,则可用:
scala>text.count

按键,即可运行程序。
通过以上介绍,用户可以了解如何使用Spark Shell进行交互式数据分析。
对于逻辑较为复杂或者运行时间较长的应用程序,用户可以通过本地Intellij等IDE作为集成开发环境进行应用开发与打包,最终提交到集群执行。对于执行时间较短的交互式分析作业,用户可以通过Spark Shell进行相应的数据分析。

相关文章
|
1月前
|
分布式计算 大数据 Apache
ClickHouse与大数据生态集成:Spark & Flink 实战
【10月更文挑战第26天】在当今这个数据爆炸的时代,能够高效地处理和分析海量数据成为了企业和组织提升竞争力的关键。作为一款高性能的列式数据库系统,ClickHouse 在大数据分析领域展现出了卓越的能力。然而,为了充分利用ClickHouse的优势,将其与现有的大数据处理框架(如Apache Spark和Apache Flink)进行集成变得尤为重要。本文将从我个人的角度出发,探讨如何通过这些技术的结合,实现对大规模数据的实时处理和分析。
142 2
ClickHouse与大数据生态集成:Spark & Flink 实战
|
1月前
|
SQL 机器学习/深度学习 分布式计算
Spark快速上手:揭秘大数据处理的高效秘密,让你轻松应对海量数据
【10月更文挑战第25天】本文全面介绍了大数据处理框架 Spark,涵盖其基本概念、安装配置、编程模型及实际应用。Spark 是一个高效的分布式计算平台,支持批处理、实时流处理、SQL 查询和机器学习等任务。通过详细的技术综述和示例代码,帮助读者快速掌握 Spark 的核心技能。
93 6
|
1月前
|
存储 分布式计算 Hadoop
数据湖技术:Hadoop与Spark在大数据处理中的协同作用
【10月更文挑战第27天】在大数据时代,数据湖技术凭借其灵活性和成本效益成为企业存储和分析大规模异构数据的首选。Hadoop和Spark作为数据湖技术的核心组件,通过HDFS存储数据和Spark进行高效计算,实现了数据处理的优化。本文探讨了Hadoop与Spark的最佳实践,包括数据存储、处理、安全和可视化等方面,展示了它们在实际应用中的协同效应。
115 2
|
1月前
|
存储 分布式计算 Hadoop
数据湖技术:Hadoop与Spark在大数据处理中的协同作用
【10月更文挑战第26天】本文详细探讨了Hadoop与Spark在大数据处理中的协同作用,通过具体案例展示了两者的最佳实践。Hadoop的HDFS和MapReduce负责数据存储和预处理,确保高可靠性和容错性;Spark则凭借其高性能和丰富的API,进行深度分析和机器学习,实现高效的批处理和实时处理。
84 1
|
1月前
|
分布式计算 Java 开发工具
阿里云MaxCompute-XGBoost on Spark 极限梯度提升算法的分布式训练与模型持久化oss的实现与代码浅析
本文介绍了XGBoost在MaxCompute+OSS架构下模型持久化遇到的问题及其解决方案。首先简要介绍了XGBoost的特点和应用场景,随后详细描述了客户在将XGBoost on Spark任务从HDFS迁移到OSS时遇到的异常情况。通过分析异常堆栈和源代码,发现使用的`nativeBooster.saveModel`方法不支持OSS路径,而使用`write.overwrite().save`方法则能成功保存模型。最后提供了完整的Scala代码示例、Maven配置和提交命令,帮助用户顺利迁移模型存储路径。
|
1月前
|
分布式计算 大数据 OLAP
AnalyticDB与大数据生态集成:Spark & Flink
【10月更文挑战第25天】在大数据时代,实时数据处理和分析变得越来越重要。AnalyticDB(ADB)是阿里云推出的一款完全托管的实时数据仓库服务,支持PB级数据的实时分析。为了充分发挥AnalyticDB的潜力,将其与大数据处理工具如Apache Spark和Apache Flink集成是非常必要的。本文将从我个人的角度出发,分享如何将AnalyticDB与Spark和Flink集成,构建端到端的大数据处理流水线,实现数据的实时分析和处理。
72 1
|
2月前
|
分布式计算 大数据 Apache
利用.NET进行大数据处理:Apache Spark与.NET for Apache Spark
【10月更文挑战第15天】随着大数据成为企业决策和技术创新的关键驱动力,Apache Spark作为高效的大数据处理引擎,广受青睐。然而,.NET开发者面临使用Spark的门槛。本文介绍.NET for Apache Spark,展示如何通过C#和F#等.NET语言,结合Spark的强大功能进行大数据处理,简化开发流程并提升效率。示例代码演示了读取CSV文件及统计分析的基本操作,突显了.NET for Apache Spark的易用性和强大功能。
63 1
|
2月前
|
存储 机器学习/深度学习 分布式计算
大数据技术——解锁数据的力量,引领未来趋势
【10月更文挑战第5天】大数据技术——解锁数据的力量,引领未来趋势
|
1月前
|
存储 分布式计算 数据挖掘
数据架构 ODPS 是什么?
数据架构 ODPS 是什么?
347 7
|
1月前
|
存储 分布式计算 大数据
大数据 优化数据读取
【11月更文挑战第4天】
53 2