重慶分公司,新征程啟航
為企業(yè)提供網(wǎng)站建設(shè)、域名注冊(cè)、服務(wù)器等服務(wù)
為企業(yè)提供網(wǎng)站建設(shè)、域名注冊(cè)、服務(wù)器等服務(wù)
這篇文章將為大家詳細(xì)講解有關(guān)Spark RDD的內(nèi)容有哪些,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。
目前創(chuàng)新互聯(lián)公司已為成百上千家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)頁空間、網(wǎng)站運(yùn)營(yíng)、企業(yè)網(wǎng)站設(shè)計(jì)、城北網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。
點(diǎn)擊步驟: Spark Programming Guide Linking with Spark 版本要對(duì)應(yīng)和集群上
idea 引入cdh版的hadoop等包可能報(bào)紅線, 因?yàn)槟J(rèn)idea引的倉(cāng)庫(kù)是apache的所以有紅線
公司中是用rz ftp工具不用因?yàn)橹虚g有跳板機(jī),ftp不好用
spark-submit \ --class test.Demo2 \ --master local[2] \ /demo/original-sparkrdd-1.0-SNAPSHOT.jar \ hdfs://s202:9000/input/* \ hdfs://s202:9000/result
彈性分布式數(shù)據(jù)集 彈性體現(xiàn)在計(jì)算上,分布式的時(shí)候計(jì)算可以容錯(cuò),通過機(jī)制進(jìn)行修復(fù),準(zhǔn)確是體現(xiàn)在計(jì)算層面上
* - A list of partitions * - A function for computing each split 每個(gè)函數(shù)作用每個(gè)分區(qū)上 對(duì)RDD計(jì)算就是對(duì)分區(qū)進(jìn)行計(jì)算 split 如分區(qū)partitions * - A list of dependencies on other RDDs RDDA 是加載其余是轉(zhuǎn)化的 RDDA-RDDB-RDDC * - Optionally, a Partitioner for key-value RDDs (e.g. to say that the RDD is hash-partitioned) 優(yōu)化時(shí)候用的多 * - Optionally, a list of preferred locations to compute each split on (e.g. block locations for * an HDFS file) preferred locations(類似多個(gè)副本) 數(shù)組在哪在那計(jì)算性能好,不用移動(dòng)數(shù)據(jù) 對(duì)每個(gè)分片計(jì)算會(huì)有一組 計(jì)算每個(gè)分片會(huì)有多個(gè)副本 窄依賴容錯(cuò)不是對(duì)所有分區(qū)進(jìn)行重新計(jì)算,對(duì)父類,寬依賴不通 Resilient Distributed Dataset (RDD)在上面五個(gè)特點(diǎn)完美體現(xiàn) 切分,副本,計(jì)算,分布式
關(guān)鍵計(jì)算傳什么參數(shù),對(duì)應(yīng)第二個(gè)特點(diǎn),必須傳個(gè)分片的 def compute(split: Partition, context: TaskContext): Iterator[T] 對(duì)應(yīng)RDD第一點(diǎn) protected def getPartitions: Array[Partition] 對(duì)應(yīng)第三點(diǎn) protected def getDependencies: Seq[Dependency[_]] = deps 計(jì)算必須拿到PreferredLocations 在什么位置 第五點(diǎn) protected def getPreferredLocations(split: Partition): Seq[String] = Nil 對(duì)應(yīng)第四點(diǎn) @transient val partitioner: Option[Partitioner] = None 類似于JdbcRDD什么都要繼承RDD
appName 是一個(gè)作業(yè)的名字 也可以不寫,不要硬編碼,提交時(shí)寫,用時(shí)間拼接,可以知道提交的是哪個(gè) The appName parameter is a name for your application to show on the cluster UI. master 是你連接集群的方式 master is a Spark, Mesos or YARN cluster URL, or a special “l(fā)ocal” string to run in local mode. 但是,運(yùn)行一個(gè)集群你不要硬編碼,不要代碼中設(shè)置master,提交的時(shí)候設(shè)置 In practice, when running on a cluster, you will not want to hardcode master in the program, 而是要用spark-submit 提交, but rather launch the application with spark-submit and receive it there. 測(cè)試就用local 就可以了 However, for local testing and unit tests, you can pass “l(fā)ocal” to run Spark in-process.
Only one SparkContext may be active per JVM. You must stop() the active SparkContext before creating a new one. 一個(gè)jvm只能有一個(gè)SparkContext,想要在啟動(dòng)別個(gè),必須關(guān)閉stop()
在spark-env 中配置HADOOP_CONF_DIR or YARN_CONF_DIR ,指向hadoop的etc/hadoop的
spark-shell 底層也是調(diào)用spark-submit 腳本運(yùn)行
Typically you want 2-4 partitions for each CPU in your cluster. 不浪費(fèi) 因?yàn)檫@樣設(shè)置省著cpu空閑,一個(gè)分區(qū)一個(gè)CPU可能空閑,浪費(fèi) task多不處理小文件多,要合并,調(diào)優(yōu)
加載外部集合用parallelize方法,用的少,最好有個(gè)CPU對(duì)應(yīng)幾個(gè)分區(qū), 防止空閑浪費(fèi)資源,一個(gè)task一個(gè)分區(qū)
加載外部數(shù)據(jù)源,本地文件,HDFS,hbase等
1.如果你要使用本地文件,那你又多少個(gè)節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)都要有這個(gè)文件,否則 找不到,standalone 也一樣,一般用不到 2.全部的輸入方式包括文件,支持目錄,壓縮,通配符 3.textFile() 有第二個(gè)參數(shù),分區(qū),默認(rèn)有個(gè)block一個(gè)分區(qū),你可以調(diào)的 更高,不可以比block更少 這個(gè)可以調(diào)優(yōu) 1.wholeTextFiles() 返回key,value key是路徑,value值 2序列化測(cè)試 3.saveAsTextFile() 保存
關(guān)于Spark RDD的內(nèi)容有哪些就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。