-
新建一個 Scala 類
查看全部 -
Transformation? 從一個 RDD 構(gòu)建新的 RDD??
查看全部 -
RDDs 介紹: 彈性分布式數(shù)據(jù)集,所有的計算都是通過 RDDs “創(chuàng)建-轉(zhuǎn)換-完成”的
.textFile("/xx" ) 導(dǎo)入的文件過大時,會自動分割文件,在集群中分割
------------------------------------------------
.parallelize(x,x) 方法,將已存在的集合對象,按分區(qū)分片導(dǎo)入 RDD 對象
Scala? 腳本語法: val 常量? ? ?var 變量 (可重新指向,但必須是同類型)
------------------------------------------------
Scala 語法: 匿名函數(shù)當(dāng)做參數(shù) .filter=>(line.contains("xx"))
查看全部 -
演示了 ssh 不需要輸密碼的修改
執(zhí)行 ssh-keygen (一路回車)
執(zhí)行 cd .ssh 看到幾個文件,其中 .pub 為公鑰
創(chuàng)建文件 authorized_keys 文件
執(zhí)行 cat 文件 > 文件? ?(把那個 .pub 導(dǎo)入?authorized_keys )
chmod 600 authorized_keys
驗收:再執(zhí)行 ssh? localhost 看到啟動后不需要輸入密碼
---------------------------------------------------------------
給集群提交作業(yè),也是把作業(yè)(工程)打包成? jar 然后上傳到服務(wù)路徑
./bin/spark-submit? ....? ?xx.jar (工程)?
查看全部 -
scala 在 idea 里新建 java 項目,在 idea 搜素插件 scala 并安裝(已經(jīng)安裝了)
file -> new project -> sbt (表示用 sbt 打包) 等待生成各種目錄和文件
版本匹配: scala , spark , jdk , sbt 的版本都要匹配
查看全部 -
spark? 基于 scala 運行在 jvm 環(huán)境中 1.7版本以上
spark 不依賴 hadoop
目錄:
????bin 可執(zhí)行文件
????core streaming python 包含組件源代碼
????examples 包含單機(jī) job 例子,以供研究
執(zhí)行命令:
./spark-shell? (等待時間較長)
在執(zhí)行成功后可看到 scala> 提示符,然后就可以使用 python 進(jìn)行交互了
查看全部 -
hadoop 缺點:離線處理,導(dǎo)致時效性差,幾分鐘幾小時為單位
spark 有點:時效性高,在內(nèi)存里進(jìn)行
查看全部 -
Spark Core :任務(wù)調(diào)度,內(nèi)存管理,容錯機(jī)制
RDDs : 彈性分布式數(shù)據(jù)集
Spark SQL:處理結(jié)構(gòu)式數(shù)據(jù)
Mlib: 機(jī)器學(xué)習(xí)相關(guān)的包(支持集群擴(kuò)展,python 缺點是單機(jī)性能有限)
查看全部 -
Spark 快速且通用的集群計算平臺
-快速,比hadoop快,基于內(nèi)存的 MapReduce(計算結(jié)果中間數(shù)據(jù)在內(nèi)存中)
-通用,應(yīng)用場景更多,批處理,迭代計算,交互查詢,流處理
由 scala 語言編寫,但是 python java 也支持
查看全部 -
combineByKey():
(createCombiner, mergeValue, mergeCombiners, partitioner)
最常用的基于key的聚合函數(shù),返回的類型可以與輸入類型不一樣。
許多基于key的聚合函數(shù)都用到了它,像groupByKey()
遍歷partition中的元素,元素的key,要么之前見過的,要么不是。
如果是新元素,使用我們提供的createCombiner()函數(shù)
如果是這個partition中已經(jīng)存在的key,就會使用mergeValue()函數(shù)
合并每個partition的結(jié)果的時候,使用mergeCombiners()函數(shù)
查看全部 -
keyvalue對rdds:
創(chuàng)建keyvalue對rdds,使用map()函數(shù),返回key/value對
例如,包含數(shù)行數(shù)據(jù)的rdd,把每行數(shù)據(jù)的第一個單詞作為keys。
查看全部 -
RDDs血統(tǒng)關(guān)系圖
Spark維護(hù)著RDDs之間的依賴關(guān)系和創(chuàng)建關(guān)系,叫做 血統(tǒng)關(guān)系圖
Spark使用血統(tǒng)關(guān)系圖計算每個RDD的需求和恢復(fù)丟失的數(shù)據(jù)
dds的特性
延遲計算:
spark對rdds的計算是,他們第一次使用action操作的時候;
這種方式在處理大數(shù)據(jù)的時候特別有用,可以減少數(shù)據(jù)的傳輸;
spark內(nèi)部記錄metadata 表名tranformations操作已經(jīng)被響應(yīng)了;
加載數(shù)據(jù)也是延遲計算,數(shù)據(jù)只有在必要的時候,才會被加載進(jìn)去。
查看全部 -
rdd基本操作之a(chǎn)ction介紹,
action表示在rdd上計算出來一個結(jié)果。
把結(jié)果返回給driver program或保存在文件系統(tǒng),count()、save都算是基本的action。
查看全部 -
集合運算
RDDs支持?jǐn)?shù)學(xué)集合的計算,例如并集、交集等
rdd transformations(轉(zhuǎn)換二)操作:集合運算
1.distinct :去除重復(fù)
2.subturast: rdd1.subtruast(rdd2),rdd1中有的,而rdd2中沒有的
3.union。并集:rdd1.union(rdd2),取rdd1和rdd2中所有的數(shù)據(jù)
4.innter:交集:取rdd1與rdd2相同的部分val rdd_distinct = rdd1.distinct()
val rdd_union = rdd1.union(rdd2)
val rdd_inter = rdd1.intersection(rdd2)
val rdd_sub = rdd1.subtract(rdd2)
Map() ? Filter() Flatmap()壓扁
rdd transformations(轉(zhuǎn)換二)操作:集合運算
1.distinct :去除重復(fù)
2.subturast: rdd1.subtruast(rdd2),rdd1中有的,而rdd2中沒有的
3.union。并集:rdd1.union(rdd2),取rdd1和rdd2中所有的數(shù)據(jù)
4.innter:交集:取rdd1與rdd2相同的部分5. subtract 包含? rdd1有rdd2的沒有的部分
查看全部 -
Transformations(轉(zhuǎn)換)
從之前的RDD構(gòu)建一個新的RDD,像map()和filter()
逐元素Transformations:
map()接收函數(shù),把函數(shù)應(yīng)用到RDD的每一個元素,返回新RDD
filter()接收函數(shù),返回只包含滿足filter()函數(shù)的元素的新RDD
flatMap(),對每個輸入元素,輸出多個輸出元素。flat壓扁的意思,將RDD中元素壓扁后返回一個新的RDD
val lines = inputs.flatMap(line=>line.split(" "))
lines.foreach(println)
查看全部 -
Scala的匿名函數(shù)
查看全部 -
Scala的匿名函數(shù)
查看全部 -
Driver program:包含了main方法
sparkContext:鏈接spark集群,一般直接使用shell創(chuàng)建好的對象sc即可
rdds:彈性分布數(shù)據(jù)集,spark如果大數(shù)據(jù)量時會自動將片分配到每一個節(jié)點上,各個片的總名稱就是rdds 對象
創(chuàng)建rdds的兩種對象:
1.使用sc.prilize對象
2.使用sc.textFile()加載外部對象
3.scala:匿名函數(shù)和類型推斷。
line2.Filter(line=>line.contains("world"))
即line2通過Filter的方法將每一行賦值給line,然后line在調(diào)用contains方法確認(rèn)哪一行是否包含有world,這個單詞,有則返回給lineRDD不可改變的分布式數(shù)據(jù)集合對象
所有的計算都是RDD的生成,轉(zhuǎn)換操作完成
一個RDD內(nèi)部由許多partitions分片組成
分片是并行處理單元, spark底層會并行的,或者順行的處理。
RDDs創(chuàng)建#scala
val?rdd=?sc.parallelize(Array(1,2,3,4),4)
#參數(shù)1:待并行化處理的集合
#參數(shù)2:分區(qū)個數(shù)
rdd.count()? ?//計算個數(shù)
rdd.foreach(println)? //遍歷
#加載外部數(shù)據(jù)
val?rddText?=?sc.textFile("hello.txt")Scala基礎(chǔ)#變量
val?變量值不可修改
var?可指向類型相同的值
#匿名函數(shù)和類型推斷??自動推斷l(xiāng)ine是string類型,可調(diào)用contain方法
lines.filter(line?=>?line.contains("world"))查看全部 -
spark的運行環(huán)境:
????基于Scala ,運行在JVM,運行環(huán)境Java7+
spark下載:
????搭建spark不需要Hadoop,下載后解壓
????虛擬機(jī)(Linux)聯(lián)網(wǎng)狀態(tài)下,通過? wget+下載鏈接
????Linux解壓命令? tar -zxvf spark.....
spark目錄
????bin目錄-可執(zhí)行文件
????core,streaming主要包含組件源代碼
????examples 包含單機(jī)例子
spark的shell:
????梳理分布在集群上的數(shù)據(jù)
????可以將數(shù)據(jù)加載到節(jié)點的內(nèi)存中,因此分布式處理可在秒級完成。
????快速迭代計算,實時查詢、分析
????spark提供了Python shell和Scala shell
Scala shell
????/bin/spark-shell
查看全部 -
Hadoop應(yīng)用場景:離線處理、對時效性要求不高(執(zhí)行時間幾分鐘到幾小時不等);
Spark應(yīng)用場景:時效性要求高的場景、機(jī)器學(xué)習(xí)等領(lǐng)域。
兩者比較:
這是生態(tài)系統(tǒng),每個組件都有其作用,各善其職即可;
Spark不具有HDFS的存儲能力,要借助HDFS等持久化數(shù)據(jù);
大數(shù)據(jù)將會孕育出更多的新技術(shù)
查看全部 -
spark core:
????包含spark的基本功能,任務(wù)調(diào)度,內(nèi)存管理,容錯機(jī)制
????內(nèi)部定義了RDDs,彈性分布式數(shù)據(jù)集
spark sql:
????是spark處理結(jié)構(gòu)化數(shù)據(jù)的庫
spark streaming:
????實時數(shù)據(jù)流處理組件
milb:
????包含通用機(jī)器學(xué)習(xí)功能的包,分類,聚類,回歸
????支持起群上的橫向擴(kuò)展
graphx:
????處理圖的庫,并進(jìn)行圖的并行計算
cluster managers:??
????集群管理
緊密集成的優(yōu)點
????spark底層優(yōu)化了,基于spark的底層組件也會得到相應(yīng)的優(yōu)化。
緊密繼承節(jié)省了各個組價組合使用時的部署,測試等時間
向spark增加新的組件時,其他組件,可立刻享用新組建的功能。
查看全部
舉報