在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.pswp.cn/news/247983.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/247983.shtml
英文地址,請注明出處:http://en.pswp.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…