在local模式下的spark程序打包到集群上运行

一、前期准备

  前期的环境准备,在Linux系统下要有Hadoop系统,spark伪分布式或者分布式,具体的教程可以查阅我的这两篇博客:

       Hadoop2.0伪分布式平台环境搭建

       Spark2.4.0伪分布式环境搭建

  然后在spark伪分布式的环境下必须出现如下八个节点才算spark环境搭建好。

  

  然后再在本地windows系统下有一个简单的词频统计程序。

import org.apache.spark.SparkConf
import org.apache.spark.SparkContext
import org.apache.spark.rdd.RDDobject ScalaSparkDemo {def main(args: Array[String]) {/*** 第一步:创建Spark的配置对象SparkConf,设置Spark程序的运行时的配置信息,* 例如说通过setMaster来设置程序要连接的Spark集群的Master的URL,* 如果设置为local,则代表Spark程序在本地运行,特别适合于机器配置条件非常差* (例如只有1G的内存)的初学者*/val conf = new SparkConf() //创建SparkConf对象,由于全局只有一个SparkConf所以不需要工厂方法conf.setAppName("wow,my first spark app") //设置应用程序的名称,在程序的监控界面可以看得到名称//conf.setMaster("local") //此时程序在本地运行,不需要安装Spark集群/*** 第二步:创建SparkContext对象* SparkContext是Spark程序所有功能的唯一入口,无论是采用Scala、Java、Python、R等都必须要有一个* SparkContext* SparkContext核心作用:初始化Spark应用程序运行所需要的核心组件,包括DAGScheduler,TaskScheduler,SchedulerBacked,* 同时还会负责Spark程序往Master注册程序等* SparkContext是整个Spark应用程序中最为至关重要的一个对象*/val sc = new SparkContext(conf) //创建SpackContext对象,通过传入SparkConf实例来定制Spark运行的具体参数的配置信息/*** 第三步:根据具体的数据来源(HDFS,HBase,Local,FileSystem,DB,S3)通过SparkContext来创建RDD* RDD的创建基本有三种方式,(1)根据外部的数据来源(例如HDFS)(2)根据Scala集合(3)由其它的RDD操作* 数据会被RDD划分为成为一系列的Partitions,分配到每个Partition的数据属于一个Task的处理范畴*///读取本地文件并设置为一个Partition// val lines = sc.textFile("words.txt", 1) //第一个参数为为本地文件路径,第二个参数minPartitions为最小并行度,这里设为1sc.setLogLevel("WARN")val lines = sc.parallelize(List("pandas","i like pandas"))//类型推断 ,也可以写下面方式// val lines : RDD[String] =sc.textFile("words.txt", 1)/*** 第四步:对初始的RDD进行Transformation级别的处理,例如map,filter等高阶函数* 编程。来进行具体的数据计算* 第4.1步:将每一行的字符串拆分成单个的单词*///对每一行的字符串进行单词拆分并把所有行的结果通过flat合并成一个大的集合val words = lines.flatMap { line => line.split(" ") }/*** 第4.2步在单词拆分的基础上,对每个单词实例计数为1,也就是word=>(word,1)tuple*/val pairs = words.map { word => (word, 1) }/*** 第4.3步在每个单词实例计数为1的基础之上统计每个单词在文中出现的总次数*///对相同的key进行value的累加(包括local和Reduce级别的同时Reduce)val wordCounts = pairs.reduceByKey(_ + _)//打印结果wordCounts.foreach(wordNumberPair => println(wordNumberPair._1 + ":" + wordNumberPair._2))//释放资源sc.stop()}
}

二、导出jar包

  这里注意词频统计程序的包名为test,类名为ScalaSparkDemo。

  

   

  注意这里勾选要打包所依赖的一些文件。当然可以选择把整个工程打包。还要注意这里打包后的文件名为test.jar。

  

  然后上传到Ubuntu中,使用这个命令 bin/spark-submit --class test.ScalaSparkDemo --master local /home/xiaow/test.jar   即可运行。/home/xiaow/test.jar:指明此jar包在主节点上的位置。关于打包到集群的详细命令,可以查阅我的这一篇博客:Spark学习之在集群上运行Spark

   

      

  如此,搞定收工!!!

 

转载于:https://www.cnblogs.com/xiaoyh/p/10822102.html

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

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

相关文章

Effective Objective-C 2.0 初读小结

1.对于OC中的对象声明例如NSObject *obj1 [NSObject new];, obj1这个指针变量是分配在栈上的, 他指向的是这一个分配在堆上面的实例对象, 如果进行下面的赋值操作NSObject *obj2 obj1;,那么并没有新生成一个实例对象, 只是在栈上分配了一个新的指针变量obj2, 而obj2和obj1指向…

APS系统对制造企业到底有多重要?看完这5点你就明白了

第一个问题:需要APS吗? APS是否重要,不能从其所体现的软件工具或系统角度来说,而应该从业务角度来说。对于制造工厂和车间的运行而言,计划是核心的业务。就如同那句俗话说的,没有规矩不成方圆,领…

Node — 第九天 (大事件项目接口实现三)

文章管理接口 设计数据表 添加文章接口 编写接口,使用postman模拟提交formdata类型的数据 在article.js 中,加入 /add 路由 postman模拟提交formdata类型的数据 multer处理文件上传 下载安装multer 加载模块 const multer require(multer) 配置上…

Python之爬虫-段子网

Python之爬虫-段子网 https://ishuo.cn #!/usr/bin/env python # -*- coding:utf-8 -*- import re import requestsresponse requests.get(https://ishuo.cn) data response.text print(data) r re.findall(<div class"content">(.*?)</div>,data) f…

Node — 第九天 (ES6降级 and 发布属于自己的[第三方模块]包)

ES6降级处理 因为 ES 6 有浏览器兼容性问题&#xff0c;可以使用一些工具进行降级处理&#xff0c;例如&#xff1a;babel 降级处理 babel 的使用步骤 安装 Node.js命令行中安装 babel配置文件 .babelrc运行命令&#xff0c;完成降级 项目初始化 (项目文件夹不能有中文) npm …

Vue — 第一天(极速入门)

基本介绍 vue是什么 目标&#xff1a;了解vue的一些基础概念。 官方网站&#xff1a; https://cn.vuejs.org/ vue是&#xff1a;渐进式javascript框架。 两组概念 &#xff08;1&#xff09;框架 库。只提供一些API给开发者使用。jquery 是一个js库框架。拥有自己的规则和…

python类和实例化

简答介绍类和实例python是面向对象的语言&#xff0c;最主要的就是类和实例&#xff0c;类是抽象的模版创建一个类class Studen(object),class 后接类名&#xff0c;定义的类名大些字母开头&#xff0c;object为类的继承&#xff0c;没有合适的继承类用object类&#xff0c;这是…

pjsip库分析

http://blog.chinaunix.net/space.php?uid287570&doblog&cuid728411 如果你对SIP/VoIP技术感兴趣,哪希望你不要错过:),如果你对写出堪称优美的Code感兴趣,那么你也不可错过:)这期间我想分析一下一个实际的协议栈的设计到实现的相关技术,算是自己的一个学习经历记录.最…

Vue — 第二天(v-model和过滤器)

VUE-02-v-model和过滤器 昨日反馈与回顾 代码仓库的问题 不要修改你克隆下来的仓库中任意代码&#xff0c;否则&#xff0c;下次pull时&#xff0c;可能会报错&#xff0c;从而得到不到最新的代码。 如果已经遇到了这个冲突&#xff1a; 解决冲突(git 中解决冲突)把关键代码…

Count

题目链接&#xff1a;点这里 题目意思&#xff1a;令f(x)表示<x的正整数中与x互质的数的平均数*2&#xff0c;求sigma(f(i)^k),L<i<R Solution: 首先&#xff0c;我们定义\(S(x)\sum_{gcd(a,x)1}a\)&#xff0c;因为gcd(a,x)1&#xff0c;所以对于任意a&#xff0c;满…

牛人iOS开发系列--音频播放、录音、视频播放、拍照、视频录制

概览 随着移动互联网的发展&#xff0c;如今的手机早已不是打电话、发短信那么简单了&#xff0c;播放音乐、视频、录音、拍照等都是很常用的功能。在iOS中对于多媒体的支持是非常强大的&#xff0c;无论是音视频播放、录制&#xff0c;还是对麦克风、摄像头的操作都提供了多套…

Vue — 第三天(计算属性和json-server)

计算属性 使用场景 如果一个结果需要依赖data中的数据&#xff0c;但是需要经过一些逻辑处理&#xff0c;才能得到你想要的数据。此时就可以使用计算属性。 例如&#xff1a;要对给定的字符串做翻转处理之后再来显示。 <div id"app"><!-- 此处逻辑复杂 …

JQuery的ready函数与JS的onload的区别详解

JQuery的ready函数与JS的onload的区别&#xff1a;1.执行时间window.onload必须等到页面内包括图片的所有元素加载完毕后才能执行。$(document).ready()是DOM结构绘制完毕后就执行&#xff0c;不必等到加载完毕。 2.编写个数不同window.onload不能同时编写多个&#xff0c;如果…

Vue — 第四天(components组件)

问题导入 下面的代码是一个折叠面板的效果。 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Docu…

iOS开发常用的RGB色值和宏

iOS中RGB常用的色值,同时可将对颜色的设置定义成宏,方便开发应用,如: // name 颜色相关 // 参数格式为&#xff1a;0xFFFFFF #define kColorWithRGB(rgbValue) \ [UIColor colorWithRed:((float)((rgbValue & 0xFF0000) >> 16)) / 255.0 \ …

防火墙综合实验

防火墙技术综合实验 一、实验目的&#xff1a;本次实验是将多种访问控制列表以及防火墙部分的知识做一个汇总 二、实验内容 A&#xff1a;Established控制列表 拓扑图 配置步骤 1:配置各端口ip地址&#xff0c;配置登陆密码 R4: 登陆账号&#xff1a;ys 密码&#xff1a;123 2:…

iOS获取当前设备型号等信息总结 包含iPhone7和iPhone7P

#include <sys/types.h> #include <sys/sysctl.h>//获得设备型号(NSString *)getCurrentDeviceModel {int mib[2];size_t len;char *machine;mib[0] CTL_HW;mib[1] HW_MACHINE;sysctl(mib, 2, NULL, &len, NULL, 0);machine malloc(len);sysctl(mib, 2, mac…

Vue — 第五天(路由)

前端路由 问题导入 在前面完成的资产管理案例中&#xff0c; 我们是把列表区域和添加表单区域实现在了一个区域。当页面功能比较复杂时&#xff0c;我们需要它们拆分开来&#xff1a;一个页面中只显示一个区域。 一个比较直观的解决方案是把它们分别做成两个独立的网页文件&…

获取网络时间,在不同时间触发事件

<!DOCTYPE html><html lang"en"><head>   <meta charset"UTF-8">   <title>时间事件</title></head><body></body><script> var int_timenew Date();//使用Date获取网络时间;   functi…

iOS获取手机的IP地址

1.添加这五个库&#xff08;在联网的情况下&#xff09; #import <sys/socket.h> #import <sys/sockio.h> #import <sys/ioctl.h> #import <net/if.h> #import <arpa/inet.h>2.写一个方法 - (NSString *)getDeviceIPIpAddresses {int sockfd soc…