首先得cd到spark目錄下,方便操作檔案。
lines=sc.textflie("readme.md")
pythonlines=lines.filter(lambda line: "python"
inline)
經過以上操作,在pythonlines這個物件就包含了在readme.md這個檔案裡所有包含有「python」這個字元的行。
這裡要注意的是,rdd存在兩種操作,即轉化操作以及行動操作。以上屬於轉化操作,此時並沒有真正的把資料讀入到了記憶體裡,只是在記憶體裡形成了乙個記錄。
pythonlines.first()
pythonlines.take(3)
pythonlines.collect()
pythonlines.count()
以上三條語句均為檢視rdd內容的方法。
第乙個是檢視包含字元的第一行。第二個是檢視包含字元的前三行。第三個是檢視包含字元的所有行。最後是對包含字元的行數計數。
對於collect()方法要注意,它是把所有資料讀入到記憶體,所以得注意記憶體容量大小問題。
pythonlines.persist
nums= sc.parallelize([1,2,3,4])
lines=sc.parallelize(["hello world","hi"])
squared=nums.map(lambda x: x*x ).collect() //collect使其繼續成為乙個list
words=lines.flatmap(lambda line: lines.split(" "))//可以用collect()方法呼叫檢視結果,flatmap將所有結果融合為乙個list
map對每一條輸入進行指定的操作,然後為每一條輸出產生乙個物件。
而flatmap是最後將所有物件合併為乙個物件,即flat,拍扁它。
rdd1.distinct()//去掉rdd1中重複元素,開銷較大
rdd1.union(rdd2)//集合合併
rdd1.intersection(rdd2)//求交集
rdd1.subtract(rdd2)//去除rdd1裡與rdd2有交集的元素
rdd1.cartesian(rdd2)//求笛卡爾積
blanklines = sc.accumulator(0) //建立了乙個累加器blanklines,用於統計空行數量,0是指初始值
blanklines.value
//可以訪問累加器的值
signprefixes = sc.broadcast(loadcallsigntable())
signprefixes.value
git 工作基礎操作備忘
已有檔案將檔案推上專案去 1.建立分支 develop,new branch 2.在自己的檔案裡如下操作 git init 在當前專案目錄中生成本地git管理,並建立乙個隱藏.git目錄 git add 新增當前目錄中的所有檔案到索引 git commit m first commit 提交到本地原...
Spark基礎 Scala集合操作
1 scala的集合操作 package com.xlucas import scala.collection.mutable created by xlucas on 2017 8 17 0017.1 預設情況下map構造的是不可變的集合,裡面的內容不可修改,一旦修改就變成新的map,原有的map...
Spark 基礎及RDD基本操作
什麼是rdd rdd resilient distributed dataset 叫做分布式資料集,是spark中最基本的資料抽象,它代表乙個不可變 可分割槽 裡面的元素可平行計算的集合。rdd具有資料流模型的特點 自動容錯 位置感知性排程和可伸縮性。rdd允許使用者在執行多個查詢時顯式地將工作集快...