千家信息网

如何利用Eclipse构建Spark集成开发环境

发表于:2025-02-22 作者:千家信息网编辑
千家信息网最后更新 2025年02月22日,如何利用Eclipse构建Spark集成开发环境,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。使用Maven编译生成可直接运行在Hado
千家信息网最后更新 2025年02月22日如何利用Eclipse构建Spark集成开发环境

如何利用Eclipse构建Spark集成开发环境,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

使用Maven编译生成可直接运行在Hadoop 2.2.0上的Spark jar包,在此基础上,介绍如何利用Eclipse构建Spark集成开发环境。

(1) 准备工作

在正式介绍之前,先要以下软硬件准备:

软件准备:

Eclipse Juno版本(4.2版本),可以直接点击这里下载:Eclipse 4.2

Scala 2.9.3版本,Window安装程序可以直接点击这里下载:Scala 2.9.3

Eclipse Scala IDE插件,可直接点击这里下载:Scala IDE(for Scala 2.9.x and Eclipse Juno)

硬件准备

装有Linux或者Windows操作系统的机器一台

(2) 构建Spark集成开发环境

我是在windows操作系统下操作的,流程如下:

步骤1:安装scala 2.9.3:直接点击安装即可。

步骤2:将Eclipse Scala IDE插件中features和plugins两个目录下的所有文件拷贝到Eclipse解压后对应的目录中

步骤3:重新启动Eclipse,点击eclipse右上角方框按钮,如下图所示,展开后,点击"Other….",查看是否有"Scala"一项,有的话,直接点击打开,否则进行步骤4操作。

步骤4:在Eclipse中,依次选择"Help" –> "Install New Software…",在打开的卡里填入http://download.scala-ide.org/sdk/e38/scala29/stable/site,并按回车键,可看到以下内容,选择前两项进行安装即可。(由于步骤3已经将jar包拷贝到eclipse中,安装很快,只是疏通一下)安装完后,重复操作一遍步骤3便可。

(3) 使用Scala语言开发Spark程序

在eclipse中,依次选择"File" –>"New" –> "Other…" –> "Scala Wizard" –> "Scala Project",创建一个Scala工程,并命名为"SparkScala"。

右击"SaprkScala"工程,选择"Properties",在弹出的框中,按照下图所示,依次选择"Java Build Path" –>"Libraties" –>"Add External JARs…",导入文章"Apache Spark:将Spark部署到Hadoop 2.2.0上"中给出的

assembly/target/scala-2.9.3/目录下的spark-assembly-0.8.1-incubating- hadoop2.2.0.jar,这个jar包也可以自己编译spark生成,放在spark目录下的assembly/target/scala- 2.9.3/目录中。

跟创建Scala工程类似,在工程中增加一个Scala Class,命名为:WordCount,整个工程结构如下:

WordCount就是最经典的词频统计程序,它将统计输入目录中所有单词出现的总次数,Scala代码如下:

import org.apache.spark._ import SparkContext._ object WordCount {   def main(args: Array[String]) {     if (args.length != 3 ){       println("usage is org.test.WordCount   ")       return     }     val sc = new SparkContext(args(0), "WordCount",     System.getenv("SPARK_HOME"), Seq(System.getenv("SPARK_TEST_JAR")))     val textFile = sc.textFile(args(1))     val result = textFile.flatMap(line => line.split("\\s+"))         .map(word => (word, 1)).reduceByKey(_ + _)     result.saveAsTextFile(args(2))   } }

在Scala工程中,右击"WordCount.scala",选择"Export",并在弹出框中选择"Java" –> "JAR File",进而将该程序编译成jar包,可以起名为"spark-wordcount-in-scala.jar",我导出的jar包下载地址是 spark-wordcount-in-scala.jar。

该WordCount程序接收三个参数,分别是master位置,HDFS输入目录和HDFS输出目录,为此,可编写run_spark_wordcount.sh脚本:

# 配置成YARN配置文件存放目录

export YARN_CONF_DIR=/opt/hadoop/yarn-client/etc/hadoop/

SPARK_JAR=./assembly/target/scala-2.9.3/spark-assembly-0.8.1-incubating-hadoop2.2.0.jar \

./spark-class org.apache.spark.deploy.yarn.Client \

–jar spark-wordcount-in-scala.jar \

–class WordCount \

–args yarn-standalone \

–args hdfs://hadoop-test/tmp/input \

–args hdfs:/hadoop-test/tmp/output \

–num-workers 1 \

–master-memory 2g \

–worker-memory 2g \

–worker-cores 2

需要注意以下几点:WordCount程序的输入参数通过"-args"指定,每个参数依次单独指定,第二个参数是HDFS上的输入目录,需要事先创建好,并上传几个文本文件,以便统计词频,第三个参数是HDFS上的输出目录,动态创建,运行前不能存在。

直接运行run_spark_wordcount.sh脚本即可得到运算结果。

在运行过程中,发现一个bug,org.apache.spark.deploy.yarn.Client有一个参数"–name"可以指定应用程序名称:

但是使用过程中,该参数会阻塞应用程序,查看源代码发现原来是个bug,该Bug已提交到Spark jira上:

// 位置:new-yarn/src/main/scala/org/apache/spark/deploy/yarn/ClientArguments.scala         case ("--queue") :: value :: tail =>           amQueue = value           args = tail           case ("--name") :: value :: tail =>           appName = value           args = tail //漏了这行代码,导致程序阻塞           case ("--addJars") :: value :: tail =>           addJars = value           args = tail

因此,大家先不要使用"–name"这个参数,或者修复这个bug,重新编译Spark。

(4) 使用Java语言开发Spark程序

方法跟普通的Java程序开发一样,只要将Spark开发程序包spark-assembly-0.8.1-incubating-hadoop2.2.0.jar作为三方依赖库即可。

(5) 总结

初步试用Spark On YARN过程中,发现问题还是非常多,使用起来非常不方便,门槛还是很高,远不如Spark On Mesos成熟。

看完上述内容,你们掌握如何利用Eclipse构建Spark集成开发环境的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注行业资讯频道,感谢各位的阅读!

程序 目录 开发 参数 步骤 选择 工程 环境 集成开发 准备 编译 输入 运行 内容 文件 方法 版本 过程 问题 统计 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 软件开发项目管理有前景吗 服务器工程师面试题 论网络安全对大学生的重要性 研究生复试网络安全 榆林网络技术推荐厂家 生活中那些方面需要数据库 战网账号无法检索服务器 杨浦区特定软件开发服务设计标准 数据库客户端绿色版 三级网络技术题库破解版软件 上海关于软件开发公司 数据库设置主键自增长 眉山服务器厂家 蓟州区信息网络技术答疑解惑 泰州环保网络技术多少钱 分布式数据库可以查看记录吗 伤害世界怎么开服务器 杨浦区挑选网络技术转让产品 图书管理系统软件开发基于什么 服务器删除网站 服务器密码破解 最好的技术网络安全技术学校 曹县百事通网络技术 棋牌游戏软件开发技术 附加数据库出错948 软件开发工薪10.5k是多少 我们说的数据库是指关系型 电信网络安全百度百科 网络技术与新媒体学数学吗 php存时间到数据库
0