真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Spark介紹,安裝-創(chuàng)新互聯(lián)

1.簡單介紹和安裝:

成都創(chuàng)新互聯(lián)公司專注于永清企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站開發(fā),成都做商城網(wǎng)站。永清網(wǎng)站建設(shè)公司,為永清等地區(qū)提供建站服務(wù)。全流程按需求定制制作,專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,成都創(chuàng)新互聯(lián)公司專業(yè)和態(tài)度為您提供的服務(wù)

(1)Spark使用scala編寫,運(yùn)行在JVM(java虛擬機(jī))上。所以,安裝Spark需要先安裝JDK。安裝好java后,到官網(wǎng)下載安裝包(壓縮文件):http://spark.apache.org/downloads.html ,當(dāng)前使用的版本是:spark-1.6.1-bin-hadoop2.4.tgz。

(2)解壓,查看目錄內(nèi)容:

tar -zxvf spark-1.6.1-bin-hadoop2.4.tgz
cd spark-1.6.1-bin-hadoop2.4

這樣我們可以在單機(jī)模式下運(yùn)行Spark了,Spark也可以運(yùn)行在Mesos、YARN等上。

2.Spark交互式shell:

(1) Spark只支持Scala和Python兩種Shell。為了對Spark Shell有個感性的認(rèn)識,我們可以follow官網(wǎng)的quick-start教程:http://spark.apache.org/docs/latest/quick-start.html

首先啟動Spark shell,Scala和Python有2種不同啟動方式(下面,我們以Scala為例介紹):

Scala:

./bin/spark-shell

scala啟動shell參數(shù):

./bin/spark-shell --name "axx" --conf spark.cores.max=5 --conf spark.ui.port=4041

Python:

./bin/pyspark

啟動后有如下界面:

Spark介紹,安裝

如果需要修改顯示的日志級別,修改$SPARK_HOME/conf/log4j.properties文件。

(2)Spark中第一個重要名詞:RDD(Resilient Distributed Dataset),彈性分布式數(shù)據(jù)集。

在Spark中,使用RDD來進(jìn)行分布式計(jì)算。RDD是Spark對于分布數(shù)據(jù)和分布計(jì)算的基本抽象。

RDD包括兩類操作,actions 和 transformations;

行動操作(actions):會產(chǎn)生新的值。會對RDD計(jì)算出一個結(jié)果,并把結(jié)果返回到驅(qū)動器程序中(例如shell命令行中,我們輸入一個計(jì)算指令,spark為我們返回的結(jié)果值),或把結(jié)果存儲到外部存儲系統(tǒng)(如HDFS)中(我們在后邊還會看到rdd.saveAsTextFile())。

轉(zhuǎn)化操作(transformations):會產(chǎn)生一個新的RDD。

val lines = sc.textFile("file:///spark/spark/README.md")

通過讀取文件的方式來定義一個RDD。默認(rèn)地,textFile會讀取HDFS上的文件,加上file://指定讀取本地路徑的文件。

lines.count()
lines.first()

上邊是2個actions操作,分別返回RDD的行數(shù)和第一行數(shù)據(jù)。

val linesWithSpark = lines.filter(line=>lines.contains("spark"))

上邊是一個transformations操作,生成一個新的RDD,該RDD是lines的一個子集,只返回包含spark的行。

3.Spark核心概念:

每個Spark應(yīng)用都包含一個驅(qū)動程序,該驅(qū)動程序在集群中執(zhí)行并行計(jì)算。在前面的事例中,驅(qū)動程序就是spark shell本身。驅(qū)動程序通過SparkContext對象(對計(jì)算集群的一個連接)來訪問Spark。

為了運(yùn)行RDD操作,驅(qū)動程序會管理一些叫做執(zhí)行器的節(jié)點(diǎn)。當(dāng)在分布式系統(tǒng)中運(yùn)行時,架構(gòu)圖如下:

Spark介紹,安裝

4.獨(dú)立應(yīng)用:

除了在shell中運(yùn)行,還可以運(yùn)行獨(dú)立應(yīng)用。與Spark Shell主要區(qū)別是,當(dāng)開發(fā)獨(dú)立應(yīng)用時,你需要自己初始化SparkContext。

4.1 初始化SparkContext

首先,需要創(chuàng)建SparkConf對象來配置應(yīng)用,然后通過SparkConf來創(chuàng)建SparkContext。初始化SparkContext對象:

SparkConf conf = new SparkConf().setAppName("wc_ms");
JavaSparkContext sc = new JavaSparkContext(conf);

setAppName可以設(shè)置這個獨(dú)立應(yīng)用的名稱,后期我們可以在WebUI上監(jiān)控這個應(yīng)用。

4.2 開發(fā)WordCount程序:

通過Maven構(gòu)建Spark程序,pom只需要引入一個依賴(根據(jù)具體的Spark版本而定):

    
	
	    org.apache.spark
	    spark-core_2.10
	    1.6.1
	

WordCount.java

package com.vip.SparkTest;

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 scala.Tuple2;


public class WordCount {
	public static void main(String[] args) {
		
		String inputfile = args[0];
		String outputfile = args[1];
		
		//得到SparkContext
		SparkConf conf = new SparkConf().setAppName("wc_ms");
		JavaSparkContext sc = new JavaSparkContext(conf);
		
		//加載文件到RDD
		JavaRDD input = sc.textFile(inputfile);
		
		//flatMap方法,來自接口JavaRDDLike,JavaRDD繼承接口JavaRDDLike。
		//將文件拆分成一個個單詞(通過空格分開);transformation操作,生成一個新的RDD。
		JavaRDD words = input.flatMap(
				new FlatMapFunction()
				{
					@Override
					public Iterable call(String content) throws Exception {
						// TODO Auto-generated method stub
						return Arrays.asList(content.split(" "));
					}
				}
			);
		//先轉(zhuǎn)換成元組(key-value),word - 1  word2 - 1;
		//再Reduce匯總計(jì)算
		JavaPairRDD counts = words.mapToPair(
				new PairFunction(){
					@Override
					public Tuple2 call(String arg0) throws Exception {
						// TODO Auto-generated method stub
						return new Tuple2(arg0,1);
					}
				}	
			).reduceByKey(
					new Function2(){
						@Override
						public Integer call(Integer x, Integer y) throws Exception {
							// TODO Auto-generated method stub
							return x+y;
						}
					}
					)
				;			
		counts.saveAsTextFile(outputfile);		
		sc.close();
	}

}

上邊對應(yīng)的步驟做了注釋。

4.3 發(fā)布應(yīng)用到Spark(單機(jī)或者集群):

(1)首先,要將開發(fā)好的程序打包:

mvn package

得到j(luò)ar包:SparkTest-0.0.1-SNAPSHOT.jar

(2)將相關(guān)文件上傳到服務(wù)器上:

將要做count的文本文件、jar文件上傳服務(wù)器。

(3)使用spark-submit啟動應(yīng)用:

$SPARK_HOME/bin/spark-submit \
--class "com.vip.SparkTest.WordCount" \
--master local \
./SparkTest-0.0.1-SNAPSHOT.jar "輸入目錄" "輸出目錄"

說明: --class 指定程序的主類;

  --master 指定Spark的URL,因?yàn)槭窃诒緳C(jī),所以指定了local

  輸入目錄:包含所有輸入的文本文件(可能是一個或多個文件)。

  輸出目錄:這塊要特別注意,首先這是一個目錄,不能是文件;再次這個目錄不能事先創(chuàng)建,否則報(bào)錯。

(4) 運(yùn)行結(jié)果:

最后執(zhí)行成功后,生成了2個文件:

part-00000  _SUCCESS

part-00000文件內(nèi)容:

Spark介紹,安裝

至此,我們的wordcount程序結(jié)束。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。


當(dāng)前題目:Spark介紹,安裝-創(chuàng)新互聯(lián)
當(dāng)前地址:http://weahome.cn/article/jiedi.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部