赞
踩
快速看完《Spark大数据处理 技术、应用与性能优化》前四章后,对Spark有了一个初步的了解,终于踏出了第一步,现在需要在Spark集群中做些测试例子,熟悉一下开发环境和开发的流程。本文主要总结了如何在本地使用Maven搭建开发环境以及如何进行远程debug。由于采用的Spark是今年5月24号才发布的Spark2.1.1,网上大多数例子都是Spark1.X,因此走了不少弯路,才搭建好开发环境。
Spark版本:2.1.1
IntelliJ IDEA:2017.1.5
开发环境:mac
测试环境:Linux
配置pom.xml,然后Maven自动下载依赖包,Spark2.X已经不提供spark-assembly-1.5.0-hadoop2.4.0.jar 之类的jar包,改成了一些小的jar包,存放在jars目录下。开发的时候可以全部导入jars目录下的jar包,但更方便的是使用maven可以方便的自动导入spark2.1.1开发所需要的包。
- <dependency>
- <groupId>org.apache.spark</groupId>
- <artifactId>spark-core_2.11</artifactId>
- <version>2.1.1</version>
- <scope>provided</scope>
- </dependency>
- package com.xuxp.test
-
- import org.apache.spark.{SparkConf, SparkContext}
-
- /**
- * Created by xuxp on 2017/8/21.
- */
- object WordCount {
- def main(args: Array[String]): Unit = {
- if (args.length == 0) {
- System.err.println("Usage: SparkWordCount <inputfile> <outputfile>")
- System.exit(1)
- }
- val conf = new SparkConf().setAppName("WominWordCount")
- val sc = new SparkContext(conf)
- val textRdd = sc.textFile(args(0))
- val result = textRdd.flatMap ( line => line.split("\\s+") ).map(word => (word, 1)).reduceByKey(_ + _)
- result.saveAsTextFile(args(1))
- }
- }
在project settings->Artifacts新建一个JAR—>from modules with dependencies
选择Main Class.
配置好后Build—>Build Artifacts —>build,就能生成打包好的jar包
配置文件上传tools—>deployment
打开Browse Remote Host,将文件直接拖过去,就实现文件上传
写一个执行脚本,上传后,每次只需要./run-spark.sh
就能很快的执行。执行时需要保证README.md在hdfs中。
执行完毕后,可以查询outputdir/part-00000
中的文件hadoop fs -cat outputdir/part-00000
export SPARK_SUBMIT_OPTS=-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=41999
这是临时设置,每次都需要进行设置一下,暂不永久设置。
运行时会出现程序挂起,监听端口中,此时进行下一步
出现如下情况,说明远程debug成功
程序会继续输出,并在断点出停住。
不得不说IntelliJ IDEA确实是一个非常强大的集成开发环境,提供版本管理,ssh,远程debug等强大功能,是Spark开发的利器,事实上Spark的开发团队也是使用IntelliJ IDEA来开发Spark的。
网上的有关spark的搭建文章有时候并不适合自己,需要根据自己的环境,软件的版本来选择搭建的方式。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。