Spark-Eclipse开发环境WordCount

视频教程:

1、优酷

2、YouTube

安装eclipse

解压eclipse-jee-mars-2-win32-x86_64.zip

JavaWordcount

解压spark-2.0.0-bin-hadoop2.6.tgz

创建 Java Project-->Spark

将spark-2.0.0-bin-hadoop2.6下的jars里面的jar全部复制到Spark项目下的lib下

Add Build Path

 package com.bean.spark.wordcount;

 import java.util.Arrays;

 import java.util.Iterator;

 import org.apache.spark.SparkConf;

 import org.apache.spark.api.java.JavaPairRDD;

 import org.apache.spark.api.java.JavaRDD;

 import org.apache.spark.api.java.JavaSparkContext;

 import org.apache.spark.api.java.function.FlatMapFunction;

 import org.apache.spark.api.java.function.Function2;

 import org.apache.spark.api.java.function.PairFunction;

 import org.apache.spark.api.java.function.VoidFunction;

 import scala.Tuple2;

 public class WordCount {

 public static void main(String[] args) {

 //创建SparkConf对象,设置Spark应用程序的配置信息

 SparkConf conf = new SparkConf();

 conf.setMaster("local");

 conf.setAppName("wordcount");

 //创建SparkContext对象,Java开发使用JavaSparkContext;Scala开发使用SparkContext

 //SparkContext负责连接Spark集群,创建RDD、累积量和广播量等

 JavaSparkContext sc = new JavaSparkContext(conf);

 //sc中提供了textFile方法是SparkContext中定义的,用来读取HDFS上的

 //文本文件、集群中节点的本地文本文件或任何支持Hadoop的文件系统上的文本文件,它的返回值是JavaRDD[String],是文本文件每一行

 JavaRDD<String> lines = sc.textFile("D:/tools/data/wordcount/wordcount.txt");

 //将每一行文本内容拆分为多个单词

 //lines调用flatMap这个transformation算子(参数类型是FlatMapFunction接口实现类)返回每一行的每个单词

 JavaRDD<String> words = lines.flatMap(new FlatMapFunction<String, String>() {

 private static final long serialVersionUID = 1L;

 @Override

 public Iterator<String> call(String s) throws Exception {

 // TODO Auto-generated method stub

 return Arrays.asList(s.split(" ")).iterator();

 }

 });

 //将每个单词的初始数量都标记为1个

 //words调用mapToPair这个transformation算子(参数类型是PairFunction接口实现类,

 //PairFunction<String, String, Integer>的三个参数是<输入单词, Tuple2的key, Tuple2的value>),

 //返回一个新的RDD,即JavaPairRDD

 JavaPairRDD<String, Integer> word = words.mapToPair(new PairFunction<String, String, Integer>() {

 private static final long serialVersionUID = 1L;

 @Override

 public Tuple2<String, Integer> call(String s) throws Exception {

 // TODO Auto-generated method stub

 return new Tuple2<String, Integer>(s, 1);

 }

 });

 //计算每个相同单词出现的次数

 //pairs调用reduceByKey这个transformation算子(参数是Function2接口实现类)对每个key的value进行reduce操作,

 //返回一个JavaPairRDD,这个JavaPairRDD中的每一个Tuple的key是单词、value则是相同单词次数的和

 JavaPairRDD<String, Integer> counts = word.reduceByKey(new Function2<Integer, Integer, Integer>() {

 private static final long serialVersionUID = 1L;

 @Override

 public Integer call(Integer s1, Integer s2) throws Exception {

 // TODO Auto-generated method stub

 return s1 + s2;

 }

 });

 counts.foreach(new VoidFunction<Tuple2<String,Integer>>() {

 private static final long serialVersionUID = 1L;

 @Override

 public void call(Tuple2<String, Integer> wordcount) throws Exception {

 // TODO Auto-generated method stub

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

 }

 });

 //将计算结果文件输出到文件系统

 /*

  * HDFS

  * 新版的API

  * org.apache.hadoop.mapreduce.lib.output.TextOutputFormat

  * counts.saveAsNewAPIHadoopFile("hdfs://master:9000/data/wordcount/output", Text.class, IntWritable.class, TextOutputFormat.class, new Configuration());

  * 使用默认TextOutputFile写入到HDFS(注意写入HDFS权限,如无权限则执行:hdfs dfs -chmod -R 777 /data/wordCount/output)

          * wordCount.saveAsTextFile("hdfs://soy1:9000/data/wordCount/output");

          *

  *

  * */

 counts.saveAsTextFile("D:/tools/data/wordcount/output");

 //关闭SparkContext容器,结束本次作业

 sc.close();

 }

 }

运行出错

在代码中加入:只要式加在JavaSparkContext初始化之前就可以

System.setProperty("hadoop.home.dir", "D:/tools/spark-2.0.0-bin-hadoop2.6");

将hadoop2.6(x64)工具.zip解压到D:\tools\spark-2.0.0-bin-hadoop2.6\bin目录下

PythonWordcount

eclipse集成python插件

解压pydev.zip将features和plugins中的包复制到eclipse的对应目录

 #-*- coding:utf-8-*-

 from __future__ import print_function

 from operator import add

 import os

 from pyspark.context import SparkContext

 '''

 wordcount

 '''

 if __name__ == "__main__":

     os.environ["HADOOP_HOME"] = "D:/tools/spark-2.0.0-bin-hadoop2.6"

     sc = SparkContext()

     lines = sc.textFile("file:///D:/tools/data/wordcount/wordcount.txt").map(lambda r: r[0:])

     counts = lines.flatMap(lambda x: x.split(' ')) \

                   .map(lambda x: (x, 1)) \

                   .reduceByKey(add)

     output = counts.collect()

     for (word, count) in output:

         print("%s: %i" % (word, count))

提交代码到集群上运行

java:

[hadoop@master application]$ spark-submit --master spark://master:7077 --class com.bean.spark.wordcount.WordCount spark.jar

 python:

[hadoop@master application]$ spark-submit --master spark://master:7077 wordcount.py

(六)Spark-Eclipse开发环境WordCount-Java&Python版Spark的更多相关文章

  1. (二)Spark-Linux环境准备-Java&Python版Spark

    Spark-Linux环境准备 视频教程: 1.优酷 2.YouTube 硬软件环境 1.虚拟机:VMware Workstation 12 2.虚拟机操作系统:RedHat5u4,单核,1G内存,2 ...

  2. (四)Spark集群搭建-Java&Python版Spark

    Spark集群搭建 视频教程 1.优酷 2.YouTube 安装scala环境 下载地址http://www.scala-lang.org/download/ 上传scala-2.10.5.tgz到m ...

  3. (八)map,filter,flatMap算子-Java&Python版Spark

    map,filter,flatMap算子 视频教程: 1.优酷 2.YouTube 1.map map是将源JavaRDD的一个一个元素的传入call方法,并经过算法后一个一个的返回从而生成一个新的J ...

  4. (一)Spark简介-Java&Python版Spark

    Spark简介 视频教程: 1.优酷 2.YouTube 简介: Spark是加州大学伯克利分校AMP实验室,开发的通用内存并行计算框架.Spark在2013年6月进入Apache成为孵化项目,8个月 ...

  5. (三)Spark-Hadoop集群搭建-Java&Python版Spark

    Spark-Hadoop集群搭建 视频教程: 1.优酷 2.YouTube 配置java 启动ftp [root@master ~]# /etc/init.d/vsftpd restart 关闭 vs ...

  6. (九)groupByKey,reduceByKey,sortByKey算子-Java&Python版Spark

    groupByKey,reduceByKey,sortByKey算子 视频教程: 1.优酷 2. YouTube 1.groupByKey groupByKey是对每个key进行合并操作,但只生成一个 ...

  7. (七)Transformation和action详解-Java&Python版Spark

    Transformation和action详解 视频教程: 1.优酷 2.YouTube 什么是算子 算子是RDD中定义的函数,可以对RDD中的数据进行转换和操作. 算子分类: 具体: 1.Value ...

  8. 构建Spark的Eclipse开发环境

    前言 无论Windows 或Linux 操作系统,构建Spark 开发环境的思路一致,基于Eclipse 或Idea,通过Java.Scala 或Python 语言进行开发.安装之前需要提前准备好JD ...

  9. Spark:利用Eclipse构建Spark集成开发环境

    前一篇文章“Apache Spark学习:将Spark部署到Hadoop 2.2.0上”介绍了如何使用Maven编译生成可直接运行在Hadoop 2.2.0上的Spark jar包,而本文则在此基础上 ...

随机推荐

  1. ABP框架 - 依赖注入

    文档目录 本节内容: 什么是依赖注入 传统方式的问题 解决方案 构造器注入模式 属性注入模式 依赖注入框架 ABP 依赖注入基础 注册依赖 约定注入 辅助接口 自定义/直接 注册 使用IocManag ...

  2. 在面试中忽然发现DateTime的一些...

    今天说说我面试中碰到的一个小问题,在我问起DateTime为什么无法赋值NULL值,一般第一反应都认为它是值类型,不是引用类型,但随后我查阅了度娘自我学习到它是结构类型,那么随之而然就无法赋值NULL ...

  3. WCF学习之旅—WCF中传统的异常处理(十六)

    WCF中的异常处理 在软件开发过程中,不可能没有异常的出现,所以在开发过程中,对不可预知的异常进行解决时,异常处理显得尤为重要.对于一般的.NET系统来说,我们简单地借助try/catch可以很容易地 ...

  4. mongodb全套配置

    1,下载&安装 MongoDB 提供了centos yum安装方式. 参考:http://docs.mongodb.org/manual/tutorial/install-mongodb-on ...

  5. T-sql语句查询执行顺序

    前言 数据库的查询执行,毋庸置疑是程序员必备技能之一,然而数据库查询执行的过程绚烂多彩,却是很少被人了解,今天哥哥要带你装逼带你飞,深入一下这sql查询的来龙去脉,为查询的性能优化处理打个基础,或许面 ...

  6. JavaScript权威设计--JavaScript函数(简要学习笔记十)

    1.函数命名规范 函数命名通常以动词为前缀的词组.通常第一个字符小写.当包含多个单词时,一种约定是将单词以下划线分割,就像"like_Zqz()". 还有一种就是"lik ...

  7. 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(23)-权限管理系统-角色组模块

    系列目录 距离上次发布22讲已经有少许日子了,真是太抱歉,最近年关项目比较急,时间太紧,没有时间发布.请大家见谅 接下来我们的目标是 角色组管理 角色组权限设置 用户管理 把角色组授权给用户 给用户分 ...

  8. 排版紧凑情况下IOS 浏览器的文字部分选中问题

    一.需求 一个每一项都是图文混排的列表页,在需要对其中的某一部分文字进行选中copy的时候,IOS个二货每次都是直接选中了整个列表项,无论怎么操作它的选框都没有办法做到部分选中. 这是我本周遇到遇到的 ...

  9. 【分布式】Zookeeper客户端

    一.前言 前篇博客分析了Zookeeper的序列化和通信协议,接着继续学习客户端,客户端是开发人员使用Zookeeper最主要的途径,很有必要弄懂客户端是如何与服务端通信的. 二.客户端 2.1 客户 ...

  10. 从游戏脚本语言说起,剖析Mono所搭建的脚本基础

    0x00 前言 在日常的工作中,我偶尔能遇到这样的问题:“为何游戏脚本在现在的游戏开发中变得不可或缺?”.那么这周我就写篇文章从游戏脚本聊起,分析一下游戏脚本因何出现,而mono又能提供怎样的脚本基础 ...