您好,登錄后才能下訂單哦!
這篇文章將為大家詳細(xì)講解有關(guān)Spark RDD的內(nèi)容有哪些,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關(guān)知識有一定的了解。
點擊步驟: Spark Programming Guide Linking with Spark 版本要對應(yīng)和集群上
idea 引入cdh版的hadoop等包可能報紅線, 因為默認(rèn)idea引的倉庫是apache的所以有紅線
公司中是用rz ftp工具不用因為中間有跳板機(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ī)制進(jìn)行修復(fù),準(zhǔn)確是體現(xiàn)在計算層面上
* - A list of partitions * - A function for computing each split 每個函數(shù)作用每個分區(qū)上 對RDD計算就是對分區(qū)進(jìn)行計算 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)化時候用的多 * - Optionally, a list of preferred locations to compute each split on (e.g. block locations for * an HDFS file) preferred locations(類似多個副本) 數(shù)組在哪在那計算性能好,不用移動數(shù)據(jù) 對每個分片計算會有一組 計算每個分片會有多個副本 窄依賴容錯不是對所有分區(qū)進(jìn)行重新計算,對父類,寬依賴不通 Resilient Distributed Dataset (RDD)在上面五個特點完美體現(xiàn) 切分,副本,計算,分布式
關(guān)鍵計算傳什么參數(shù),對應(yīng)第二個特點,必須傳個分片的 def compute(split: Partition, context: TaskContext): Iterator[T] 對應(yīng)RDD第一點 protected def getPartitions: Array[Partition] 對應(yīng)第三點 protected def getDependencies: Seq[Dependency[_]] = deps 計算必須拿到PreferredLocations 在什么位置 第五點 protected def getPreferredLocations(split: Partition): Seq[String] = Nil 對應(yīng)第四點 @transient val partitioner: Option[Partitioner] = None 類似于JdbcRDD什么都要繼承RDD
appName 是一個作業(yè)的名字 也可以不寫,不要硬編碼,提交時寫,用時間拼接,可以知道提交的是哪個 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. 但是,運行一個集群你不要硬編碼,不要代碼中設(shè)置master,提交的時候設(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. 測試就用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. 一個jvm只能有一個SparkContext,想要在啟動別個,必須關(guān)閉stop()
在spark-env 中配置HADOOP_CONF_DIR or YARN_CONF_DIR ,指向hadoop的etc/hadoop的
spark-shell 底層也是調(diào)用spark-submit 腳本運行
Typically you want 2-4 partitions for each CPU in your cluster. 不浪費 因為這樣設(shè)置省著cpu空閑,一個分區(qū)一個CPU可能空閑,浪費 task多不處理小文件多,要合并,調(diào)優(yōu)
加載外部集合用parallelize方法,用的少,最好有個CPU對應(yīng)幾個分區(qū), 防止空閑浪費資源,一個task一個分區(qū)
加載外部數(shù)據(jù)源,本地文件,HDFS,hbase等
1.如果你要使用本地文件,那你又多少個節(jié)點,每個節(jié)點都要有這個文件,否則 找不到,standalone 也一樣,一般用不到 2.全部的輸入方式包括文件,支持目錄,壓縮,通配符 3.textFile() 有第二個參數(shù),分區(qū),默認(rèn)有個block一個分區(qū),你可以調(diào)的 更高,不可以比block更少 這個可以調(diào)優(yōu) 1.wholeTextFiles() 返回key,value key是路徑,value值 2序列化測試 3.saveAsTextFile() 保存
關(guān)于Spark RDD的內(nèi)容有哪些就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。