Spark大數據學習筆記

運行:
運行spark版的python:pyspark
Scala版:spark-shell

RDD:
數據集會被自動整理成RDD在集群上并行進行
RDD可以有執行一系列的動作(actions),這些動作可以返回值(values),轉換(transformations),或者指向新的RDD的指針。

常見行動操作:(會引起實際的計算)
.count()//相當于RDD的len()
.take(n)//取RDD中n個元素
.collect()輸出全部數據
.saveAsTextFile()輸出到文件
.reduce()對RDD應用一個reduce函數【reduce函數,對所有元素逐一應用,每次的輸入是新的一個跟上一次reduce的返回值lambda x,y: x+y】

常見轉化操作:(惰性求值所以不會計算)
RDD1.union(RDD2)//連接RDD


spark基本結構:
每一個spark都用一個驅動器程序來發起并行(spark shellsc)
driver通過SparkContext連接集群(sc)
sc的各種方法都是可以自動進行并行計算的
每一個計算圖稱為一個RDD
專門用來做鍵值對操作的RDD叫pair RDD
有對應的一套函數用來根據key進行操作(類似SQL,reduceByKey,groupByKey,join,排序)
PageRank例子:
1.每個頁面向相鄰頁面發送(自己的排序值/鄰居數量)
2.每個頁面把排序值更新為:0.15+0.85*鄰居發過來的值之和

python接口:
在python中import并初始化RDD對象,寫好后編寫sbt(推薦)或者Maven構建文件注明構建的方式,最后用spark-submit程序運行就可以
特別地,一些比較大的包(比如SQL)pyspark里面不會內建,而是要import一下

要看有什么能用的函數,只要sc.然后按Tab

SQL:
使用
context = SQLContext(sc)//一切sql類都是SQLContext的子類
results = context.sql(“SELECT * FROM people”)
發送一條SQL,返回一個RDD,每個元素一行
查詢:
df.select($"colA", $"colB")

數據格式:

1.DataFrame
? ? // 創建含有單列數據的 DataFrame

? ? val df = sqlContext.range(0, 16)
2.Dataset:
? ? 更新版本的DataFrame,有的時候會重載舊的DataFrame
? ? 因此當我們從1.6.x遷移到2.0.0的時候, 無需任何修改就直接用上了DataSet.
? 能在RDD的基礎上擴充功能,要變成Dataset:
? SQLContext.toDS()

數據傾斜:
每臺機器數據量不一樣,每個元素處理的數據量不一樣...之類

Steaming:
用于把數據分batch
此處輸入圖片的描述
創建Steaming:
1.創建 StreamContext 對象
需要兩個參數,一個是 SparkConf 對象(sc),一個是分塊間隔時間。
val ssc = new StreamingContext(sc, Seconds(2))

2.創建DStream對象(數據流對象)

? ? ? ? val lines = ssc.socketTextStream("localhost", 9999)
? ? ? ? 在 DStream 中,每一條記錄都是一行文本
3.對流進行操作
? ? ? ? 就對DStream 操作就行,用map之類的,返回新的DStream
? ? 此處輸入圖片的描述
4.啟動流
? ? ? ? ssc.start()

DStream還支持滑動窗口之類的
Steaming通過checkpoint保證其24小時連續工作

MlLib:
跟sklearn里面的簡潔度差不多:
1.生成LabelPoint(用來保存樣本的數據和標簽的數據結構)
? ? posExamples=spamFeature.map(lambda features:LabeledPoint(1,features))? //把label設為1
? ? trainingData=posExamples.union(negExamples)? //因為有union的存在,所以把正負數據集并在一起比python還要簡單
? ? *也可以轉化成其他的數據結構,比如稀疏矩陣(Vector.dense(ndarray)),Rating之類,但是這些都不包含數據處理,比如加法都是沒有的

2.model=LogisticRegressionWithSGD.train(trainingData)

TFIDF:
HashingTF把每個單詞所需要的向量長度S % n =hash值,默認是2的20次方,所以產生的向量長度不超過2的20次方

不能并行的時候:
對于不能并行的算法,比如去掉停用詞之類的,不能直接寫在pyspark上,需要用sc.map(這里寫所需python代碼)這樣就可以在每個單節點上調用。

緩存RDD以重復使用:
調用MLlib前,寫sc.cache()(一開始就寫也沒關系)

進一步支持的其他數據科學工具:
任何 TensorFlow 程序都可以輕松地移植到 TensorFlowOnSpark 上。通常,只需要修改十行以內的 Python 代碼。


Scala基本語法:
定義一個新變量一定要用var
常量用val
有很強的隱式類型轉換:比如如果char沒有toint方法而string有,你硬是在char上調用tolin就會被轉成stri


最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,908評論 6 541
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,324評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,018評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,675評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,417評論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,783評論 1 329
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,779評論 3 446
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,960評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,522評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,267評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,471評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,009評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,698評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,099評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,386評論 1 294
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,204評論 3 398
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,436評論 2 378

推薦閱讀更多精彩內容