from pyspark import sparkcontext,sparkconf
from pyspark.sql import sqlcontext
from pyspark import sparkconf,sparkcontext
url='local'
sc = sparkcontext.getorcreate(conf)
#建立rdd最簡單的方式就是使用sparkcontext的parallelize方法
rdd=sc.parallelize([(3,4),(3,6),(5,6),(1,2)])
#k-v rdd基本轉換運算
rdd=sc.parallelize([(3,4),(3,6),(5,6),(1,2)])
rddrdd.collect()
[(3, 4), (3, 6), (5, 6), (1, 2)]
#獲得key
rdd.keys().collect()
[3, 3, 5, 1]
#獲得values
rdd.values().collect()
[4, 6, 6, 2]
#使用filter運算率先key運算
rdd.filter(lambda keyvalue:keyvalue[0]>3).collect()
#使用filter運算率先key運算
rdd.filter(lambda keyvalue:keyvalue[0]>3).collect()
[(5, 6)]
1
#使用filter運算率先values運算
rdd.filter(lambda keyvalue:keyvalue[1]>3).collect()
[(3, 4), (3, 6), (5, 6)]
#使用mapvalues進行運算
rdd.mapvalues(lambda x:x+100).collect()
[(3, 104), (3, 106), (5, 106), (1, 102)]
#sortbykey從小到大依照key排列
rdd.sortbykey(ascending=true).collect()
[(1, 2), (3, 4), (3, 6), (5, 6)]
#reducebykey (相同的key值,把value相加)
rdd.reducebykey(lambda x,y:x+y).collect()
[(5, 6), (1, 2), (3, 10)]
rdd.collect()
[(3, 4), (3, 6), (5, 6), (1, 2)]
1rdd.takeordered(1)
[(1, 2)]
00
#多個rdd k-v 轉換計算
rdd1=sc.parallelize([(3,4),(3,6),(5,6),(1,2)])
rdd2=sc.parallelize([(3,100),(1,200)])
#k-v join運算
rdd1.join(rdd2).collect()
[(1, (2, 200)), (3, (4, 100)), (3, (6, 100))]
#left join
rdd1.leftouterjoin(rdd2).collect()
[(1, (2, 200)), (3, (4, 100)), (3, (6, 100)), (5, (6, none))]
#right join
rdd1.rightouterjoin(rdd2).collect()
[(1, (2, 200)), (3, (4, 100)), (3, (6, 100))]
#subtractbykey 會移除相同key的資料
rdd1.subtractbykey(rdd2).collect()
[(5, 6)]
#k-v 動作操作
rdd.first()
(3, 4)
2rdd.take(2)
[(3, 4), (3, 6)]
rdd.collect()
[(3, 4), (3, 6), (5, 6), (1, 2)]
0rdd.first()[0]
3
#計算rdd中每乙個k值的個數
rdd.countbykey()
rdd.countbykey()
defaultdict(int, )
type(rdd.countbykey())
collections.defaultdict
rdd.countbykey().get(3)
rdd.countbykey().get(3)
2
#collectasmap 建立k-v字典
kv=rdd.collectasmap()
kvkv
10kv.get(10)
3kv.get(3)
6rdd.collect()
[(3, 4), (3, 6), (5, 6), (1, 2)]
3kv[3]
63
#k-v lookup
rdd.lookup(3)
[4, 6]
1rdd.lookup(1)
[2]
運維基本概述
下面將it運維管理基礎知識必須要學習或能讓你運維任務加分的技藝稍做簡介。最先我們假定你是乙個公司的it運維經理。須要完成五十臺以上的伺服器和若干雜七雜八的配備,哪些運維人員應該必備的技術?it運維管理基礎知識 一 微軟系統 關於windows的熟識是最基本的。當然,作為乙個運維經理,可不是整天玩個w...
mysql運維2 基本操作
先說一說mysql的啟動 啟動過程 etc init.d mysqld start 檢查埠 檢視程序 使用mysqld啟動其實內部會呼叫mysqld safe指令碼啟動mysql,一般出故障時會直接呼叫mysql safe指令碼啟動mysql,因為可以自己新增引數。多例項用mysqld safe啟動...
Linux 基本運維命令之 head
head 與 tail 就像它的名字一樣的淺顯易懂,它是用來顯示開頭或結尾某個數量的文字區塊,head 用來顯示檔案的開頭至標準輸出中,而 tail 想當然爾就是看檔案的結尾。1 命令格式 head 引數 檔案 2 命令功能 head 用來顯示檔案的開頭至標準輸出中,預設head命令列印其相應檔案的...