(六)Spark-Eclipse开发环境WordCount-JavaPython版Spark

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

  1 package com.bean.spark.wordcount;
  2 
  3  
  4 
  5 import java.util.Arrays;
  6 
  7 import java.util.Iterator;
  8 
  9  
 10 
 11 import org.apache.spark.SparkConf;
 12 
 13 import org.apache.spark.api.java.JavaPairRDD;
 14 
 15 import org.apache.spark.api.java.JavaRDD;
 16 
 17 import org.apache.spark.api.java.JavaSparkContext;
 18 
 19 import org.apache.spark.api.java.function.FlatMapFunction;
 20 
 21 import org.apache.spark.api.java.function.Function2;
 22 
 23 import org.apache.spark.api.java.function.PairFunction;
 24 
 25 import org.apache.spark.api.java.function.VoidFunction;
 26 
 27  
 28 
 29 import scala.Tuple2;
 30 
 31  
 32 
 33 public class WordCount {
 34 
 35 public static void main(String[] args) {
 36 
 37 //创建SparkConf对象,设置Spark应用程序的配置信息
 38 
 39 SparkConf conf = new SparkConf();
 40 
 41 conf.setMaster("local");
 42 
 43 conf.setAppName("wordcount");
 44 
 45  
 46 
 47 //创建SparkContext对象,Java开发使用JavaSparkContext;Scala开发使用SparkContext
 48 
 49 //SparkContext负责连接Spark集群,创建RDD、累积量和广播量等
 50 
 51 JavaSparkContext sc = new JavaSparkContext(conf);
 52 
 53  
 54 
 55 //sc中提供了textFile方法是SparkContext中定义的,用来读取HDFS上的
 56 
 57 //文本文件、集群中节点的本地文本文件或任何支持Hadoop的文件系统上的文本文件,它的返回值是JavaRDD[String],是文本文件每一行
 58 
 59 JavaRDD<String> lines = sc.textFile("D:/tools/data/wordcount/wordcount.txt");
 60 
 61 //将每一行文本内容拆分为多个单词
 62 
 63 //lines调用flatMap这个transformation算子(参数类型是FlatMapFunction接口实现类)返回每一行的每个单词
 64 
 65 JavaRDD<String> words = lines.flatMap(new FlatMapFunction<String, String>() {
 66 
 67  
 68 
 69 private static final long serialVersionUID = 1L;
 70 
 71  
 72 
 73 @Override
 74 
 75 public Iterator<String> call(String s) throws Exception {
 76 
 77 // TODO Auto-generated method stub
 78 
 79 return Arrays.asList(s.split(" ")).iterator();
 80 
 81 }
 82 
 83 });
 84 
 85 //将每个单词的初始数量都标记为1个
 86 
 87 //words调用mapToPair这个transformation算子(参数类型是PairFunction接口实现类,
 88 
 89 //PairFunction<String, String, Integer>的三个参数是<输入单词, Tuple2的key, Tuple2的value>),
 90 
 91 //返回一个新的RDD,即JavaPairRDD
 92 
 93 JavaPairRDD<String, Integer> word = words.mapToPair(new PairFunction<String, String, Integer>() {
 94 
 95  
 96 
 97 private static final long serialVersionUID = 1L;
 98 
 99  
100 
101 @Override
102 
103 public Tuple2<String, Integer> call(String s) throws Exception {
104 
105 // TODO Auto-generated method stub
106 
107 return new Tuple2<String, Integer>(s, 1);
108 
109 }
110 
111 });
112 
113 //计算每个相同单词出现的次数
114 
115 //pairs调用reduceByKey这个transformation算子(参数是Function2接口实现类)对每个key的value进行reduce操作,
116 
117 //返回一个JavaPairRDD,这个JavaPairRDD中的每一个Tuple的key是单词、value则是相同单词次数的和
118 
119 JavaPairRDD<String, Integer> counts = word.reduceByKey(new Function2<Integer, Integer, Integer>() {
120 
121  
122 
123 private static final long serialVersionUID = 1L;
124 
125  
126 
127 @Override
128 
129 public Integer call(Integer s1, Integer s2) throws Exception {
130 
131 // TODO Auto-generated method stub
132 
133 return s1 + s2;
134 
135 }
136 
137 });
138 
139 counts.foreach(new VoidFunction<Tuple2<String,Integer>>() {
140 
141  
142 
143 private static final long serialVersionUID = 1L;
144 
145  
146 
147 @Override
148 
149 public void call(Tuple2<String, Integer> wordcount) throws Exception {
150 
151 // TODO Auto-generated method stub
152 
153 System.out.println(wordcount._1+" : "+wordcount._2);
154 
155 }
156 
157 });
158 
159 //将计算结果文件输出到文件系统
160 
161 /*
162 
163  * HDFS
164 
165  * 新版的API
166 
167  * org.apache.hadoop.mapreduce.lib.output.TextOutputFormat
168 
169  * counts.saveAsNewAPIHadoopFile("hdfs://master:9000/data/wordcount/output", Text.class, IntWritable.class, TextOutputFormat.class, new Configuration());
170 
171  * 使用默认TextOutputFile写入到HDFS(注意写入HDFS权限,如无权限则执行:hdfs dfs -chmod -R 777 /data/wordCount/output)
172 
173          * wordCount.saveAsTextFile("hdfs://soy1:9000/data/wordCount/output");
174 
175          *
176 
177  *
178 
179  * */
180 
181 counts.saveAsTextFile("D:/tools/data/wordcount/output");
182 
183  
184 
185  
186 
187 //关闭SparkContext容器,结束本次作业
188 
189 sc.close();
190 
191 }
192 
193 }

 

 

运行出错

在代码中加入:只要式加在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的对应目录

 1 #-*- coding:utf-8-*-
 2 
 3  
 4 
 5 from __future__ import print_function
 6 
 7 from operator import add
 8 
 9 import os
10 
11 from pyspark.context import SparkContext
12 
13 '''
14 
15 wordcount
16 
17 '''
18 
19 if __name__ == "__main__":
20 
21     os.environ["HADOOP_HOME"] = "D:/tools/spark-2.0.0-bin-hadoop2.6"
22 
23     sc = SparkContext()
24 
25     lines = sc.textFile("file:///D:/tools/data/wordcount/wordcount.txt").map(lambda r: r[0:])
26 
27     counts = lines.flatMap(lambda x: x.split(' ')) \
28 
29                   .map(lambda x: (x, 1)) \
30 
31                   .reduceByKey(add)
32 
33     output = counts.collect()
34 
35     for (word, count) in output:
36 
37         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

 

转载于:https://www.cnblogs.com/LgyBean/p/6251344.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/489261.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c# 从一组数中随机抽取一定个数_Python随机模块22个函数详解

随机数可以用于数学&#xff0c;游戏&#xff0c;安全等领域中&#xff0c;还经常被嵌入到算法中&#xff0c;用以提高算法效率&#xff0c;并提高程序的安全性。平时数据分析各种分布的数据构造也会用到。random模块&#xff0c;用于生成伪随机数&#xff0c;之所以称之为伪随…

读书人:人机融合中的深度态势感知

雅典学院&#xff08;拉斐尔&#xff09;来源&#xff1a;人机与认知实验室“你现在的气质里&#xff0c;藏着你走过的路&#xff0c;读过的书和爱过的人。"— 电影《卡萨布兰卡》里的一句话《追问人工智能》--刘伟 - 读书人视频如下&#xff1a;https://www.bilibili.com…

python时间序列进行线性插值_Python pandas时间序列插值日期时间数据

这似乎有效.可能有点清理代码.但是你得到了它的要点 from datetime import datetime import pandas as pd import time #Create data df pd.DataFrame({ interval : [0.782296, 0.795469, 0.821426, 0.834957, 0.864383, 0.906240], datetime : [datetime(2012, 11, 19, 12, 4…

根据id 隐藏_明星ID价值四位数?吃鸡玩家崩溃:打工一个月工资还没名称值钱...

01你知道吗&#xff1f;和平精英游戏名称也很值钱&#xff1f;——最近&#xff0c;有这样一条消息出现在了我的面前&#xff0c;某和平精英角色明星名称的价格居然被捧到了千元之上&#xff0c;对&#xff0c;各位没有看错&#xff0c;虽然只是一个普普通通的游戏名称&#xf…

范式变革与规律涌现:世界科技发展新趋势

来源&#xff1a;学习时报新科技革命与产业变革持续展开&#xff0c;以人工智能为代表的新兴使能技术驶入“快车道”&#xff0c;世界科技创新被认为正在进入“认知革命”的阶段——对生命过程的“精微刻画与操作”和对人类智能的“逆向工程与强化”。趋势特征从“大停滞”迈向…

Unity5和WebGL移植指南的一些总结

对于手游开发者来说&#xff0c;更新版本往往意味着非常复杂的过程&#xff0c;你需要根据反馈做更新、测试、提交然后等待审核&#xff0c;而由于不需要客户端依赖&#xff0c;页游往往是快速测试游戏版本的最佳途径&#xff0c;很多人可能都知道Unity 5可以再不用Unity Web P…

java indexof方法_【3-14】Java中集合类list的增删改查

Hello&#xff0c;大家好&#xff0c;我是大家最亲爱的siki老师&#xff0c;每天都会在这里为大家带来一个Java语法中有趣的知识点&#xff0c;Q群175158287&#xff0c;欢迎同大家多多交流哈&#xff01;今天给大家带来的是Java中list类的使用&#xff0c;java.util 包提供了l…

清华大学孙富春教授:基于知识智能的机器人技能学习

来源&#xff1a;学术通在刚结束的2019中国人工智能产业年会分论坛——“知识智能及其产业应用论坛”上&#xff0c;清华大学计算机科学与技术系教授、中国人工智能学会副理事长、国家杰青孙富春教授发表了题为《基于知识智能的机器人技能学习》的报告。孙富春教授报告聚焦人工…

图书管理系统可行性分析报告范例_会做可行性分析报告贺州专家团队*金

金兰8564ertyu-03会做可行性分析报告贺州专家团队*金不满意全额&#xff0c;三年内免费提供修改服务&#xff0c;目前&#xff0c;金兰企划已为上万家客户及伙伴提供了专业、精准的商业策划服务&#xff0c;并得到了客户及行业的一致好评。会做可行性分析报告贺州专家团队*金金…

java开发项目实例_Alibaba内部出品Java突击手册,大量开发实战项目分享

前言Java作为目前最受欢迎的语言&#xff0c;每年都会有很多转行、跨行等等地人加入到开发大军中来&#xff0c;但是Java开发也是会遇到瓶颈的&#xff0c;当我们遇到瓶颈的时候就会去寻求发展突破&#xff0c;尤其是从Java开发高级工程师向架构师迈进的时候&#xff0c;需要大…

快递下单后取消订单_网约车定位地点不动,男子别的平台下单,没取消订单要付6.6元...

众所周知&#xff0c;在平台上网约车的时候&#xff0c;要是超出一定时间放鸽子&#xff0c;通常都是要扣除乘客部分钱&#xff0c;反之是司机取消了订单&#xff0c;平台同样会给司机处罚&#xff0c;在路程近的单子上&#xff0c;有些司机是接了后就不想跑&#xff0c;但是也…

SQL基础--同义词

同义词的概念&#xff1a; 同义词是Oracle对象的别名&#xff0c;使用同义词访问相同的对象 可以为表、视图、存储过程、函数或另一同义词等对象创建同义词 方便访问其它用户的对象&#xff0c;隐藏了对象的身份 缩短对象名字的长度 同义词创建语法&#xff1a; CREATE [PUBLIC…

5G概述和基本原理

来源&#xff1a;电子万花筒 未来智能实验室是人工智能学家与科学院相关机构联合成立的人工智能&#xff0c;互联网和脑科学交叉研究机构。未来智能实验室的主要工作包括&#xff1a;建立AI智能系统智商评测体系&#xff0c;开展世界人工智能智商评测&#xff1b;开展互联网&am…

以下选项中python用于异常处理结构_《Python 程序设计》复习题

目录 填空题 一、基础知识 二、序列 三、选择结构与循环结构和函数及面向对象、文件 选择题 一、Python 基础语法 二、基本数据类型 三、程序的控制结构 四、函数和代码复用 五、组合数据类型 六、面向对象&#xff1a; 七、文件 判断题 一、基础知识 二、序列 三、选择结构与循…

去掉边框_安卓也有堪比 VOUN 的加边框应用了,素材丰富到没朋友

iOS 系统中有一款可以给照片加边框的应用 VOUN&#xff0c;里面的相框档次很高&#xff0c;调整后的效果也很不错&#xff0c;但是安卓却没有一款类似的应用。开发者 Joey 尝试找了很多款相似的应用&#xff0c;结果不是广告就是骗流量的辣鸡应用&#xff0c;所以最后独自开发了…

轮播图--JS手写

轮播图基本每个网站都会有&#xff0c;也有很多的JQuery插件可以用&#xff0c;这里是用JS代码写的。 案例&#xff1a;http://www.shopli.cn 首页三张图片的轮换就是这种写法 {Layout null; }<!DOCTYPE html><html> <head><meta name"viewport&q…

物联网趋势下的边缘计算发展解析

来源&#xff1a;《NXP客栈》家居或商业应用&#xff0c;到互联车辆&#xff0c;边缘计算贯穿整个物联网。随着数据量的增加&#xff0c;这种计算需要具有最优网络安全功能与最高功能安全级别的强大互联边缘计算平台。创新通常成波出现&#xff08;图1&#xff09;。一些创新浪…

docker php 一键部署_Java开发提升十倍生产力:Idea远程一键部署springboot到Docker

IDEA是Java开发利器&#xff0c;springboot是Java生态中最流行的微服务框架&#xff0c;docker是时下最火的容器技术&#xff0c;那么它们结合在一起会产生什么化学反应呢&#xff1f;一、开发前准备1.Docker安装可以参考&#xff1a;https://docs.docker.com/install/2.配置do…

四个人过桥的题目_云南的几种“勾魂”特产,舌尖上的美味,让人回味无穷,你吃过吗...

云南&#xff0c;彩云之南&#xff0c;说到云南美食&#xff0c;大家可能第一反应都是“米线呀&#xff01;”害&#xff01;大云南的美食可多了&#xff0c;你可不能只知道这一个&#xff0c;号称花城的云南&#xff0c;这里的美食也是“遍地开花”。过桥米线一碗过桥米线&…

逐!帧!揭!秘!终于能看清波士顿动力机器人的细节了

来源&#xff1a;乾明&#xff1b;发自 凹非寺&#xff1b;量子位报道波士顿动力&#xff0c;逆天机器人的代名词。每一次新的视频放出&#xff0c;机器人做出各种充满视觉冲击力动作&#xff0c;都会引起疯狂传播。凭借敏捷的身姿和动物般的反应能力&#xff0c;它们做出了各种…