第一个Spark程序

1、Java下Spark开发环境搭建(from http://www.cnblogs.com/eczhou/p/5216918.html

1.1、jdk安装

安装oracle下的jdk,我安装的是jdk 1.7,安装完新建系统环境变量JAVA_HOME,变量值为“C:\Program Files\Java\jdk1.7.0_79”,视自己安装路劲而定。

同时在系统变量Path下添加C:\Program Files\Java\jdk1.7.0_79\bin和C:\Program Files\Java\jre7\bin。

1.2 spark环境变量配置

去http://spark.apache.org/downloads.html网站下载相应hadoop对应的版本,我下载的是spark-1.6.0-bin-hadoop2.6.tgz,spark版本是1.6,对应的hadoop版本是2.6

解压下载的文件,假设解压 目录为:D:\spark-1.6.0-bin-hadoop2.6。将D:\spark-1.6.0-bin-hadoop2.6\bin添加到系统Path变量,同时新建SPARK_HOME变量,变量值为:D:\spark-1.6.0-bin-hadoop2.6

1.3 hadoop工具包安装

spark是基于hadoop之上的,运行过程中会调用相关hadoop库,如果没配置相关hadoop运行环境,会提示相关出错信息,虽然也不影响运行,但是这里还是把hadoop相关库也配置好吧。

1.3.1 去下载hadoop 2.6编译好的包https://www.barik.net/archive/2015/01/19/172716/,我下载的是hadoop-2.6.0.tar.gz,

1.3.2 解压下载的文件夹,将相关库添加到系统Path变量中:D:\hadoop-2.6.0\bin;同时新建HADOOP_HOME变量,变量值为:D:\hadoop-2.6.0

1.4 eclipse环境

直接新建java工程,将D:\spark-1.6.0-bin-hadoop2.6\lib下的spark-assembly-1.6.0-hadoop2.6.0.jar添加到工程中就可以了。

 

2、Java写Spark WordCount程序

package cn.spark.study;

import java.util.Arrays;

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对象,对程序进行必要的配置
        SparkConf conf = new SparkConf()
        .setAppName("WordCount").setMaster("local");
        
        //通过conf创建上下文对象
        JavaSparkContext sc = new JavaSparkContext(conf);
        
        //创建初始RDD
        JavaRDD<String> lines = sc.textFile("D://spark.txt");
        
        //----用各种Transformation算子对RDD进行操作-----------------------------------------
        JavaRDD<String> words = lines.flatMap(new FlatMapFunction<String, String>() {

            private static final long serialVersionUID = 1L;

            @Override
            public Iterable<String> call(String line) throws Exception {
                // TODO Auto-generated method stub
                return Arrays.asList(line.split(" "));
            }
        });
        
        JavaPairRDD<String,Integer> pairs = words.mapToPair(new PairFunction<String, String, Integer>() {

            private static final long serialVersionUID = 1L;

            @Override
            public Tuple2<String, Integer> call(String word) throws Exception {
                // TODO Auto-generated method stub
                return new Tuple2<String,Integer>(word,1);
            }
        });
        
        JavaPairRDD<String,Integer> wordCounts = pairs.reduceByKey(new Function2<Integer, Integer, Integer>() {
            
            private static final long serialVersionUID = 1L;
            
            @Override
            public Integer call(Integer v1, Integer v2) throws Exception {
                // TODO Auto-generated method stub
                return v1 + v2;
            }
        });
        
        
        //----用一个 action 算子触发job-----------------------------------------
        wordCounts.foreach(new VoidFunction<Tuple2<String,Integer>>() {
            
            @Override
            public void call(Tuple2<String, Integer> wordCount) throws Exception {
                // TODO Auto-generated method stub
                System.out.println(wordCount._1 + " appeared " + wordCount._2 + " times");
            }
        });
    }

} 

 

转载于:https://www.cnblogs.com/key1309/p/5303557.html

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

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

相关文章

arduino判断是否连接串口_Arduino-串口通信

Serial”系列函数&#xff0c;所以我们要对其有所了解&#xff0c;下面介绍几个常“Serial”函数。1、Serial.begin()—设置串行每秒传输数据的速率(波特率)。在同计算机通讯时&#xff0c;使用下面这些值&#xff1a;300, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400…

最详细的docker安装rocketMQ教程来了

RocketMQ是一款分布式、队列模型的消息中间件&#xff0c;是由阿里巴巴设计的&#xff0c;具有以下特点&#xff1a; 支持严格的消息顺序 支持Topic与Queue两种模式 亿级消息堆积能力 比较友好的分布式特性 同时支持Push与Pull方式消费消息 历经多次天猫双十一海量消息考验…

树莓派IO口驱动代码的编写、微机总线地址、物理地址、虚拟地址、BCM2835芯片手册

地址总线&#xff1a; 百度百科解释&#xff1a; 地址总线 (Address Bus&#xff1b;又称&#xff1a;位址总线) 属于一种电脑总线 &#xff08;一部份&#xff09;&#xff0c;是由CPU 或有DMA 能力的单元&#xff0c;用来沟通这些单元想要存取&#xff08;读取/写入&#xff…

夺命雷公狗---DEDECMS----26dedecms面包屑导航的实现

我们在很多项目里面都会用到面包屑导航&#xff0c;而dedecms里面也是给我们封装好面包屑导航的了,如下图所示&#xff1a; 在dede里面实现面包屑导航主要用到{dede:field.position/}标签&#xff0c;我们首先来修改下article_movie.htm内容页的模版文件&#xff1a; 我们修改成…

rust油桶用什么打_草莓用什么膨大素好?草莓膨大剂什么时间打?草莓用什么肥料膨大...

农资365公众号&#xff0c;了解更多生根、根腐、重茬、土传、枯黄萎、根烂病、防治根结线虫、微生物菌肥、膨大坐果、抗病增产的防治方法&#xff01;草莓含有丰富的营养&#xff0c;并且种植效益较高&#xff0c;其种植范围也比较广。草莓种植期间有很多因素影响草莓果实膨大&…

docker安装kafka,超级简单的

简介 kafka是一个分布式消息队列。具有高性能、持久化、多副本备份、横向扩展能力。生产者往队列里写消息&#xff0c;消费者从队列里取消息进行业务逻辑。一般在架构设计中起到解耦、削峰、异步处理的作用。 kafka对外使用topic的概念&#xff0c;生产者往topic里写消息&…

Linux中常见的环境变量笔记

1、变量&#xff1a;BASHBash Shell的全路径比如&#xff1a;echo $BASH2、变量&#xff1a;BASH_VERSIONBash Shell的版本号3、变量&#xff1a;EUID记录当前用户的UID。root用户值为0。4、FUNCNAME在用户函数体内部&#xff0c;记录当前函数体的函数名。5、变量&#xff1a;H…

消防信号二总线有没电压_春晓161#地块人防工程消防电源监控系统的设计与应用...

涂志燕安科瑞电气股份有限公司&#xff0c;上海 嘉定 201801&#xff1b;摘要&#xff1a;本文简述了消防设备电源的组成原理&#xff0c;分析了消防设备电源监控系统在应用中的设计依据和相关规范。通过安科瑞消防设备电源监控系统在春晓161#地块项目的实例介绍&#xff0c;阐…

大学慕课数据结构单元测试——华中科技大学

第一章绪论单元测试 一、单选(2分) 1、​___C__ 是数据的最小单位。 A.信息项 B.数据元素 C.数据项 D.表元素 2、​以下说法不正确的是 ___B___。 A.数据元素是数据的基本单位 B.数据项可由若干个数据元素构成 C.数据可由若干个数据元素构成 D.数据项是不可分割的最小…

gitlab应用

1.git config --global user.email "mybimt.com"  //注册本地环境 2.ssh-keygen -t rsa -C "mybimt.com" //生成本机的key 3.在gitlab加入.ssh中生成的key //gitlab中注册本机 4.git clone gitmy.git …

RocketMQ同步刷盘和异步刷盘

刷盘机制 同步刷盘和异步刷盘 在broker配置文件里修改参数配置是同步还是异步

vim模式下报错E37: No write since last change No write since last change for buffer “ “

报错如下图所示&#xff1a; 网上的解决方法&#xff1a; 文件为只读文件&#xff0c;无法修改。使用命令:w!强制存盘即可在vim模式下&#xff0c;键入以下命令&#xff1a;:w&#xff01;存盘后在使用vim命令检查是否保存&#xff0c;如未保存&#xff0c;编辑后重复以上操作…

Linux中Shell中取消变量和特殊变量的笔记

1、取消变量取消变量也就是将变量从内存中释放出去&#xff0c;可以使用unset 后面加变量名即可&#xff0c;当然函数的释放同样可以采用该方式处理。比如&#xff1a;name"123"echo ${name}输出&#xff1a;123unset nameecho ${name}输出&#xff1a;#取消函数示例…

光华科技光刻胶_【收藏】6天5板!21只光刻胶概念(名单)“出炉”!

连板数量21家中迪投资5板&#xff0c;宁波联合 神驰机电 神马电力4板&#xff0c;汉缆股份 华盛昌 浙江鼎力3板&#xff0c;海航投资世联行 飞龙股份 安洁科技 京威股份 三丰智能 容大感光 晶瑞股份 奥飞数据 光大嘉宝 电子城博天环境 兆易创新 聚辰股份2板二、科技股&#xff…

20159302 《网络攻击与防范》第四周学习总结

本节学习内容为网络攻击环境的配置。在此过程中&#xff0c;我们至少需要一台靶机&#xff0c;一台攻击机。在此选用windows server 2000为靶机&#xff0c;kali系统为攻击机。 一、系统的安装 根据之前发布的kali系统的安装过程&#xff0c;依据此流程进行windows server的安装…

智能家居项目开发准备工作

智能家居功能细节拆分&#xff1a; 控制端支持语音设备的输入&#xff08;用到之前所学习的LD3320语音识别模块&#xff09;或者是socket客户端&#xff08;这个客户端可以是ftp项目的客户端也可以是Android的app&#xff09;&#xff0c;主控芯片是树莓派&#xff0c;既接收语…

catia曲面扫掠命令详解_Mastercam快捷键命令,附中英文功能讲解!值得收藏!

组合键式快捷键功能快 捷 键功能Alt 0设置Z向控制深度Alt 1设置绘制图形的颜色Alt 2设置当前层Alt 3与Alt 2功能相同Alt 4设置刀具面(Tplane)Alt 5设置绘图面(Cplane)Alt 6设置视图面(Gview)Alt A进入自动存文件对话框快 捷 键功能Alt B工具条的显示/关闭Alt C选择执…

RocketMQ中主从复制

生产者把消息发送到master&#xff0c;不会发送到slave 消费者可以从maste也可以从slave消费消息 如果master挂了&#xff0c;那就从slave消费数据&#xff0c;那么slave怎么拿到master中的数据 这就要用到主从复制

智能家居代码构建编写、简单工厂模式、树莓派摄像头视频监控功能实现

根据上一节内容的代码框架开始编写代码&#xff1a; 首先编写controlDevices.h这个头文件里面的代码&#xff0c;这个是设备工厂每一个结点的结构体类型&#xff0c;而且还要在这个头文件里面进行函数的声明&#xff0c;也就是创建的那些设备.c文件里面的函数&#xff08;为了…