最近學習Spark,我主要使用pyspark api進行編程,
網路上中文的解釋不是很多,api官方文檔也不是很容易明白,我結合自己的理解記錄下來,方便別人蔘考,也方便自己回顧吧
本次介紹的是 pyspark.RDD.histogram
histogram(buckets)
輸入參數buckets可以是一個數字,也可以是一個列表
輸出結果為一個元組,元組包含兩個列表分別是桶和長條圖
例如:對一個0到50的序列組成的列表,
buckets是數字時
>>> rdd = sc.parallelize(range(51))>>> rdd.histogram(2)([0, 25, 50], [25, 26])
參數buckets是2,輸出兩部分,[0,25,50]是
桶,[25,26]是各個桶分布內的
頻數
buckets是列表時
>>> rdd.histogram([0, 5, 25, 50])([0, 5, 25, 50], [5, 20, 26])
參數buckets是[0,5,25,50],輸出兩部分,[0,5,25,50]是桶,[5,20,26]是各個桶分布內的頻數
>>> rdd = sc.parallelize(["ab", "ac", "b", "bd", "ef"])>>> rdd.histogram(("a", "b", "c"))(('a', 'b', 'c'), [2, 2])
總結以下幾點:
1、histogram 用來根據給定的參數buckets,計算長條圖分布結果, buckets參數可以是一個數字,也可以是一個列表
2、所有長條圖的結果集合區間右邊是開區間,最後一個區間除外
例如 : 結果[0,25, 50] 表示的桶結果是 [0,25),[25,50], 即,0 <= x < 25, 25 <= x <= 50
3、桶必須是排好序的, 並且不包含重複元素, 至少有兩個元素
例如: 結果[0,25,50]是從小到大有序的,且至少包含兩個元素
4、如果參數buckets是一個數字,它會產生一個由RDD的最大值和最小值之間均勻分布的桶,
例如: 如果最小值是0, 最大值是100, 給定buckets等於2,桶的結果是[0,50),[50,100]
如果RDD包含無窮大,buckets必須至少是1
如果RDD中的元素不變,min等於max, 總是返回一個桶