1、首先需要搭建好hadoop+spark环境,并保证服务正常。本文以wordcount为例。

2、创建源文件,即输入源。hello.txt文件,内容如下:

tom jerry

henry jim

suse lusy

注:以空格为分隔符

3、然后执行如下命令:

hadoop fs -mkdir -p /Hadoop/Input(在HDFS创建目录)

hadoop fs -put hello.txt /Hadoop/Input(将hello.txt文件上传到HDFS)

hadoop fs -ls /Hadoop/Input (查看上传的文件)

hadoop fs -text /Hadoop/Input/hello.txt (查看文件内容)

4、用spark-shell先测试一下wordcount任务。

(1)启动spark-shell,当然需要在spark的bin目录下执行,但是这里我配置了环境变量。

(2)然后直接输入scala语句:

val file=sc.textFile("hdfs://hacluster/Hadoop/Input/hello.txt")

val rdd = file.flatMap(line => line.split(" ")).map(word => (word,1)).reduceByKey(_+_)

rdd.collect()

rdd.foreach(println)

ok,测试通过。

5、Scala实现单词计数

1 packagecom.example.spark2

3 /**4 * User: hadoop

5 * Date: 2017/8/17 0010

6 * Time: 10:20

7*/

8 importorg.apache.spark.SparkConf9 importorg.apache.spark.SparkContext10 importorg.apache.spark.SparkContext._11

12 /**13 * 统计字符出现次数

14*/

15object ScalaWordCount {16def main(args: Array[String]) {17 if (args.length < 1) {18 System.err.println("Usage: ")19 System.exit(1)20}21

22 val conf = newSparkConf()23 val sc = newSparkContext(conf)24 val line = sc.textFile(args(0))25

26 line.flatMap(_.split(" ")).map((_, 1)).reduceByKey(_+_).collect().foreach(println)27

28sc.stop()29}30 }

6、用java实现wordcount

packagecom.example.spark;importjava.util.Arrays;importjava.util.List;importjava.util.regex.Pattern;importorg.apache.spark.SparkConf;importorg.apache.spark.api.java.JavaPairRDD;importorg.apache.spark.api.java.JavaRDD;importorg.apache.spark.api.java.JavaSparkContext;importorg.apache.spark.api.java.function.FlatMapFunction;importorg.apache.spark.api.java.function.Function2;importorg.apache.spark.api.java.function.PairFunction;importscala.Tuple2;public final classWordCount {private static final Pattern SPACE = Pattern.compile(" ");public static void main(String[] args) throwsException {if (args.length < 1) {

System.err.println("Usage: JavaWordCount ");

System.exit(1);

}

SparkConf conf= new SparkConf().setAppName("JavaWordCount");

JavaSparkContext sc= newJavaSparkContext(conf);

JavaRDD lines = sc.textFile(args[0],1);

JavaRDD words = lines.flatMap(new FlatMapFunction() {private static final long serialVersionUID = 1L;

@Overridepublic Iterablecall(String s) {returnArrays.asList(SPACE.split(s));

}

});

JavaPairRDD ones = words.mapToPair(new PairFunction() {private static final long serialVersionUID = 1L;

@Overridepublic Tuple2call(String s) {return new Tuple2(s, 1);

}

});

JavaPairRDD counts = ones.reduceByKey(new Function2() {private static final long serialVersionUID = 1L;

@OverridepublicInteger call(Integer i1, Integer i2) {return i1 +i2;

}

});

List> output =counts.collect();for (Tuple2, ?>tuple : output) {

System.out.println(tuple._1()+ ": " +tuple._2());

}

sc.stop();

}

}

7、IDEA打包。

(1)File ---> Project Structure

点击ok,配置完成后,在菜单栏中选择Build->Build Artifacts...,然后使用Build等命令打包。打包完成后会在状态栏中显示“Compilation completed successfully...”的信息,去jar包输出路径下查看jar包,如下所示。

将这个wordcount.jar上传到集群的节点上,scp wordcount.jar root@10.57.22.244:/opt/   输入虚拟机root密码。

8、运行jar包。

本文以spark on yarn模式运行jar包。

执行命令运行javawordcount:spark-submit --master yarn-client --class com.example.spark.WordCount --executor-memory 1G --total-executor-cores 2 /opt/wordcount.jar hdfs://hacluster/aa/hello.txt

执行命令运行scalawordcount:spark-submit --master yarn-client --class com.example.spark.ScalaWordCount --executor-memory 1G --total-executor-cores 2 /opt/wordcount.jar hdfs://hacluster/aa/hello.txt

本文以java的wordcount为演示对象,如下图:

以上是直接以spark-submit方式提交任务,下面介绍一种以java web的方式提交。

9、以Java Web的方式提交任务到spark。

用spring boot搭建java web框架,实现代码如下:

1)新建maven项目spark-submit

2)pom.xml文件内容,这里要注意spark的依赖jar包要与scala的版本相对应,如spark-core_2.11,这后面2.11就是你安装的scala的版本

4.0.0

org.springframework.boot

spring-boot-starter-parent

1.4.1.RELEASE

wordcount

spark-submit

1.0-SNAPSHOT

com.example.spark.SparkSubmitApplication

UTF-8

1.8

3.4

2.1.0

org.apache.commons

commons-lang3

${commons.version}

org.apache.tomcat.embed

tomcat-embed-jasper

provided

org.springframework.boot

spring-boot-starter-data-jpa

org.springframework.boot

spring-boot-starter-data-redis

org.springframework.boot

spring-boot-starter-test

test

com.jayway.jsonpath

json-path

org.springframework.boot

spring-boot-starter-web

spring-boot-starter-tomcat

org.springframework.boot

org.springframework.boot

spring-boot-starter-jetty

org.eclipse.jetty.websocket

*

org.springframework.boot

spring-boot-starter-jetty

provided

javax.servlet

jstl

org.eclipse.jetty

apache-jsp

provided

org.springframework.boot

spring-boot-starter-data-solr

org.springframework.boot

spring-boot-starter-data-jpa

org.springframework.boot

spring-boot-starter-web

javax.servlet

jstl

org.apache.spark

spark-core_2.11

${org.apache.spark-version}

org.apache.spark

spark-sql_2.11

${org.apache.spark-version}

org.apache.spark

spark-hive_2.11

${org.apache.spark-version}

org.apache.spark

spark-streaming_2.11

${org.apache.spark-version}

org.apache.hadoop

hadoop-client

2.7.3

org.apache.spark

spark-streaming-kafka_2.11

1.6.3

org.apache.spark

spark-graphx_2.11

${org.apache.spark-version}

org.apache.maven.plugins

maven-assembly-plugin

3.0.0

com.fasterxml.jackson.core

jackson-core

2.6.5

com.fasterxml.jackson.core

jackson-databind

2.6.5

com.fasterxml.jackson.core

jackson-annotations

2.6.5

war

spring-snapshots

Spring Snapshots

https://repo.spring.io/snapshot

true

spring-milestones

Spring Milestones

https://repo.spring.io/milestone

false

maven2

http://repo1.maven.org/maven2/

spring-snapshots

Spring Snapshots

https://repo.spring.io/snapshot

true

spring-milestones

Spring Milestones

https://repo.spring.io/milestone

false

maven-war-plugin

src/main/webapp

org.mortbay.jetty

jetty-maven-plugin

spring.profiles.active

development

org.eclipse.jetty.server.Request.maxFormContentSize

600000

true

/

7080

(3)SubmitJobToSpark.java

packagecom.example.spark;importorg.apache.spark.deploy.SparkSubmit;/***@authorkevin

**/

public classSubmitJobToSpark {public static voidsubmitJob() {

String[] args= new String[] { "--master", "yarn-client", "--name", "test java submit job to spark", "--class", "com.example.spark.WordCount", "/opt/wordcount.jar", "hdfs://hacluster/aa/hello.txt"};

SparkSubmit.main(args);

}

}

(4)SparkController.java

packagecom.example.spark.web.controller;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importorg.slf4j.Logger;importorg.slf4j.LoggerFactory;importorg.springframework.stereotype.Controller;importorg.springframework.web.bind.annotation.RequestMapping;importorg.springframework.web.bind.annotation.RequestMethod;importorg.springframework.web.bind.annotation.ResponseBody;importcom.example.spark.SubmitJobToSpark;

@Controller

@RequestMapping("spark")public classSparkController {private Logger logger = LoggerFactory.getLogger(SparkController.class);

@RequestMapping(value= "sparkSubmit", method ={ RequestMethod.GET, RequestMethod.POST })

@ResponseBodypublicString sparkSubmit(HttpServletRequest request, HttpServletResponse response) {

logger.info("start submit spark tast...");

SubmitJobToSpark.submitJob();return "hello";

}

}

5)将项目spark-submit打成war包部署到Master节点tomcat上,访问如下请求:

http://10.57.22.244:9090/spark/sparkSubmit

在tomcat的log中能看到计算的结果。

java spark wordcount_提交任务到spark(以wordcount为例)相关推荐

  1. 基于Java代码自动提交Spark任务

    1.SparkLauncher简介 SparkLauncher支持两种模式: (1).new SparkLauncher().launch(),直接启动一个Process,效果跟Spark submi ...

  2. spark 序列化错误 集群提交时_【问题解决】本地提交任务到Spark集群报错:Initial job has not accepted any resources...

    本地提交任务到Spark集群报错:Initial job has not accepted any resources 错误信息如下: 18/04/17 18:18:14 INFO TaskSched ...

  3. Spark学习(四) -- Spark作业提交

    标签(空格分隔): Spark 作业提交 先回顾一下WordCount的过程: sc.textFile("README.rd").flatMap(line => line.s ...

  4. Spark入门(四)Idea远程提交项目到spark集群

    一.依赖包配置 scala与spark的相关依赖包,spark包后尾下划线的版本数字要跟scala的版本第一二位要一致,即2.11 pom.xml <?xml version="1.0 ...

  5. 【原创】大数据基础之Spark(1)Spark Submit即Spark任务提交过程

    Spark2.1.1 一 Spark Submit本地解析 1.1 现象 提交命令: spark-submit --master local[10] --driver-memory 30g --cla ...

  6. 平台搭建---Spark提交应用程序---Spark Submit提交应用程序及yarn

    本部分来源,也可以到spark官网查看英文版. spark-submit 是在spark安装目录中bin目录下的一个shell脚本文件,用于在集群中启动应用程序(如***.py脚本):对于spark支 ...

  7. Spark Submit提交及参数调优

    https://www.cnblogs.com/LHWorldBlog/p/8414342.html https://www.cnblogs.com/haoyy/p/6893943.html spar ...

  8. Spark任务提交至YARN运行的3种方式与Mapreduce提交任务的几种形式

    一: Spark任务提交至YARN运行的3种方式 Spark作为新一代计算平台的闪亮明星,在我们的大数据平台中具有非常重要的作用,SQL查询.流计算和机器学习等场景都能见到它的身影,可以说平台应用的数 ...

  9. Spark 作业提交

    Spark 作业提交 一.作业打包jar 1.工程目录结构 2.不同运行模式的打包方式 Local模式与Yarn模式不同就在于:Local模式运行时jar包仅在本地存在,而Yarn模式需要在每台从机的 ...

最新文章

  1. C#程序可将文本文件藏于位图中,也可导出
  2. (转) Android生成签名文件并用其对apk文件进行签名
  3. stm32 GPIO简单介绍及初始化配置(库函数)
  4. reactjs组件生命周期:componentWillReceiveProps及新旧版本生命周期钩子函数对比
  5. 【开源】高颜值 功能强大的开源Markdown编辑器
  6. 前端学习(1973)vue之电商管理系统电商系统之完成修改的操作
  7. python写选择排序_如何快速掌握python选择排序算法?
  8. 爬虫找工作要掌握什么_找爬虫工作必须掌握scrapy框架究竟什么?
  9. opera档案学习(二)
  10. Head First设计模式读书笔记一 策略模式
  11. 九、SpringBoot——默认错误页面错误页面定制
  12. python有颜色进度条库_来看看Python炫酷的颜色输出与进度条打印
  13. 「黑科技」盘点那些脑洞大开的人类设计的“异形”机器人
  14. 校园导游系统(C++实现,VC6.0编译,使用EasyX图形库)
  15. 跳妹儿读绘本:我家孩子爱不释手的经典绘本之套装书
  16. u-boot:env源码目录分析一
  17. 企查查访问超频怎么办_怎样删除企查查的不良信息
  18. 哈工大软件构造期末知识点总结
  19. 正版win10系统安装方法、硬盘安装win10系统、直接电脑安装win10系统、无需u盘装win10系统、菜鸟安装win10系统、云服务器装win10系统
  20. 服务器金蝶上机日志在哪个文件夹,金蝶软件如何查看某用户的上机日志

热门文章

  1. oracle10数据库链接失败,Oracle10g出现Enterprise Manager 无法连接到数据库实例解决办法...
  2. sumo的简单应用_sumo快速运行简单仿真实例详细教程
  3. redis rdb aof区别_理解Redis的持久化机制:RDB和AOF
  4. python代码安全性问题_这个python代码对注入安全吗?
  5. 在Java中从字符串转换为双精度
  6. Java中常用的4个Json库,哪个性能更牛逼?
  7. web.config中配置字符串中特殊字符的处理
  8. java.lang.IllegalThreadStateException 线程运行报错
  9. C语言文本文件与二进制文件转换
  10. Pyalgotrade量化交易回测框架