(六)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
(六)Spark-Eclipse开发环境WordCount-JavaPython版Spark相关推荐
- Apache Spark学习:利用Eclipse构建Spark集成开发环境
介绍了如何使用Maven编译生成可直接运行在Hadoop 2.2.0上的Spark jar包,而本文则在此基础上, 介绍如何利用Eclipse构建Spark集成开发环境 . 不建议大家使用eclips ...
- spark Intellij IDEA及eclipse开发环境搭建
Apache Spark探秘:利用Intellij IDEA构建开发环境 http://dongxicheng.org/framework-on-yarn/apache-spark-intellij- ...
- Hadoop Eclipse开发环境设置
1.Hadoop开发环境简介 1.1 Hadoop集群简介 Java版本:jdk-6u31-linux-i586.bin Linux系统:CentOS6.0 Hadoop版本:hadoop-1.0.0 ...
- 《Spark核心技术与高级应用》——3.2节构建Spark的开发环境
本节书摘来自华章社区<Spark核心技术与高级应用>一书中的第3章,第3.2节构建Spark的开发环境,作者于俊 向海 代其锋 马海平,更多章节内容可以访问云栖社区"华章社区&q ...
- 搭建Python+Eclipse开发环境
写在前面:因为hacker,开始学习Python,学习书籍是<Python灰帽子--黑客与逆向工程师的Python编程之道> 成为高手的秘诀--高手气质修炼! -------------- ...
- Eclipse开发环境搭建
锁定老帖子 主题:Eclipse开发环境搭建 精华帖 (0) :: 良好帖 (3) :: 新手帖 (13) :: 隐藏帖 (0) 作者 正文 hanqunfeng 等级: 性别: 文章: 57 积分: ...
- linux eclipse下qt开发环境搭建,Qt Eclipse开发环境的部署 上篇
关于Qt Eclipse的开F发,将会从不同的环境中区安装部署,分为上.中.篇,三篇文章来讲.Windows,Linux平台下安装使用eclipse + QT4.4.3开发环境,Windows,Li ...
- ubuntu eclipse java_搭建Ubuntu Java Eclipse开发环境
搭建环境:Ubuntu 16.04 ×64 1.搭建jdk1.8运行环境 1.1.下载jdk1.8 使用的版本:jdk-8u121-linux-x64.tar.gz 1.2.安装jdk1.8 STEP ...
- hadoop搭建与eclipse开发环境设置
hadoop搭建与eclipse开发环境设置(转) 1. Windows下eclipse开发环境配置 1.1 安装开发hadoop插件 将hadoop安装包hadoop\contrib\ecli ...
最新文章
- python画曲线图例-如何使用python画曲线图
- Qt Creator如何恢复默认布局
- 转载:flash 跨域 crossdomain.xml
- 在mysql中插入日期
- commons-pool2-2.3 jar包_[漏洞复现]FastJson 1.2.61远程代码执行漏洞(From第三方jar包)
- java可选项_在Java中链接可选项8
- 用python实现excel 14个常用操作_用Python实现excel 14个常用操作
- 搭建公司内部的NuGet服务器
- CentOS 7 关闭 rpcbind 服务
- 百度热力图颜色说明_揭秘!张家口100万人口热力图,看完你就知道房子该买哪里了...
- CR 与 LF 换行符
- 使用MS Word设计和打印自己的圣诞贺卡,第1部分
- 计算机网络设备调试员报名,工信部网络设备调试员一级高级技师、二级技师
- leafler如何清除地图上的图标点
- NVR是什么设备?(Network Video Recorder,网络视频监控系统的存储转发部分)硬盘录像机DVR、视频编码器DVS、网络摄像机IPC
- GORM报错sql: Scan called without calling Next
- windows redis 后台启动
- “傲慢”的飞书渴望被“白嫖”
- JavaWeb27.2【综合案例:旅游线路详情展示】
- c标签List 判断空、获取长度、遍历map、格式化时间
热门文章
- Hibernate_2_Hibernate中对象状态及转化_一级缓存_Session详解_HQL/SQL/Criteria_一对多关系_级联操作
- 【Pytorch神经网络实战案例】26 MaskR-CNN内置模型实现目标检测
- 命令行import torch正常,但pycharm中显示“No module named torch”解决方法
- html插入flash代码_初学者必备Web开发APP,支持代码补全,一键插入代码,厉害了!...
- LeetCode 2075. 解码斜向换位密码(模拟)
- LeetCode 366. 寻找二叉树的叶子节点(上下翻转二叉树+BFS)
- cms安装教程Linux,DoraCMS安装教程(linux)
- 前端:实现手机左右滑动效果
- Linux Ubuntu 安装 anaconda3和 Pycharm 社区版本
- android p dp5,谷歌释出Android P第5个开发者预览版更新!