您的位置:首页 > 其它

利用Intellij Idea在windows搭建spark 开发环境(含打jar包过程)(一)

2017-01-16 15:20 573 查看
本文的目的:利用Intellij Idea在windows搭建spark 开发环境
环境:windows 10, intellij idea2016.1.1, spark 1.6.2(HDP),hadoop2.7.3(HDP),scala 2.10.5(编译环境), sbt管理依赖
背景:spark单点运算不能解决大数据的问题的时候,就需要使用spark-submit 调用jar包的方式分布式运算,从而提高集群的运算和资源使用能力。
集群模式:本文默认使用的是spark自带的standalone模式。
[由于CSDN博客不支持截图图片大小超过2M,所以这里只有步骤没有截图说明]

步骤:
第一步
下载intellij idea2016.1.1,点击此处下载Community版本:安装 Intellij IDEA 

第二步:
在Intellij菜单中选择“Configure”→“Plugins”→“Browse repositories”命令,在弹出的界面中输入“Scala”搜索插件,然后点击相应安装按钮进行安装,重启Intellij使配置生效。

第三步:
点击File, 选择“Create New Project”命令,此时选择左侧列表中的“Scala”选项,为了方便以后的开发工作,选择右侧的“SBT”选项。
[差不多等1个小时后可以看到自动创建的src目录]

然后,邮件src目录,新建scala class, name 为HelloSpark,kind 修改为Object。

第四步:测试程序是否正确
object HelloSpark {
def  main(args:Array[String]): Unit ={
print("Hello Spark")

}
}

右键HelloSpark.scala ,run 'HelloSpark'. 如果能看到“Hello Spark”环境没有问题。

第五步:加入Spark开发包:

使用IDEA导入外部Jar包,具体步骤:
“File”→“Project Structure”→“Modules”→“Dependencies”→+...→“Library...”→“Library Type(Java)”→“Select Library Files”→“Configure Library”
然后点击 “apply”

spark 程序必须要把spark-assembly-1.5.0-hadoop2.3.0.jar,  jdk jar,以及相关的驱动包放入。都可以使用这样的方法。

第六步:IDEA 生成JAR 

使用IDEA编译class文件,同时可以将class打包成Jar文件,方法如下:

①选择菜单“File”→“Project Structure”,弹出“Project Structure”的设置对话框;
②选择左边的“Artifacts”,点击上方的“+”按钮;
③在弹出的对话框中选择“Jar”→“from moduls with dependencies”;
④选择要启动的类,然后确定;
⑤应用之后选择菜单“Build”→“Build Artifacts”,选择“Build”或者“Rebuild”后即可生成,生成的Jar文件位于工程项目目录的out/artifacts下。

##这里一定要确认Artifacts->Output Layout->Main Class 一定是主类,比如HelloSpark;
##jar 的路径可以在项目路径下找到:
##..\HelloSpark\out\artifacts\HelloSpark_jar\

最后, 环境测试:
为了确保环境没有问题,可以跑下面这段代码测试一下:

测试代码:

object SparkPi {
def main(args: Array[String]) {
val conf = new SparkConf().setAppName("Spark Pi")
conf.setMaster("spark://192.168.1.125:7077")
val spark = new SparkContext(conf)
val slices = if (args.length > 0) args(0).toInt else 2
val n = math.min(100000L * slices, Int.MaxValue).toInt // avoid overflow
val count = spark.parallelize(1 until n, slices).map { i =>
val x = random * 2 - 1
val y = random * 2 - 1
if (x*x + y*y < 1) 1 else 0
}.reduce(_ + _)
println("Pi is roughly " + 4.0 * count / n)
spark.stop()
}
}



如有不详之处,欢迎留言。
本文参考书籍:spark核心技术与高级应用
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐