在這篇文章中,我將討論Apache Spark作爲編程語言的核心API。我假設您具有Spark框架(元組,RDD,對RDD和數據框架)及其初始化步驟的基本知識。
當我們推出星火SHEL,L無論是在斯卡拉或Python(即星火Shell或PySpark),它將初始化 sparkContext
爲 sc
和 SQLContext
作爲 sqlContext
。
核心API
通過應用函數創建此RDD中元素的元組(對RDD)。
將此RDD保存爲文本文件。
返回RDD中未包含在另一個值中的每個值。
返回此RDD與另一個RDD的交集,即輸出不包含任何重複元素,即使輸入RDD也是如此。
返回包含此RDD中不同元素的新RDD。
返回此RDD與另一個RDD的並集。
此方法採用RDD的第一個num元素。
此方法從RDD獲取前N個元素。它返回按降序排序的列表。
此方法按給定方式對此RDD進行排序
keyfunc
。此方法返回此RDD中的元素數。
此方法使用指定的可交換和關聯二元運算符減少此RDD的元素。
此方法分發本地Python集合以形成RDD。
此方法通過首先將函數應用於此RDD的每個元素(與map方法相同)然後展平結果來返回新的RDD。
此方法通過將函數應用於此RDD的每個元素來返回新的RDD。即它將通過應用函數將RDD轉換爲新的RDD。
此方法返回一個僅包含滿足謂詞的元素的新RDD,即它將創建一個新的RDD,其中包含滿足參數中給出的條件的元素。
此方法返回包含RDD中所有元素的列表。
此方法返回RDD中的第一個元素。
此方法從HDFS讀取文本文件並將其作爲字符串的RDD返回。
sc.textFile(路徑)
ordersRDD = sc。textFile('orders')
rdd.first()
ordersRDD。第一個()
#u'1,2013-07-25 00:00:00.0,11599,CLOSED' - 訂單的第一個元素RDD
rdd.collect()
ordersRDD。收集()
#[u'68882,2014-07-22 00:00:00.0,10000,ON_HOLD',u'68883,2014-07-23 00:00:00.0,5533,COMPLETE']
rdd.filter(F)
filterdRDD = ordersRDD。過濾(拉姆達 線:線。分裂('')[ 3 ] 在 [ '完整的' ])
filterdRDD。第一個()
#u'3,2013-07-25 00:00:00.0,12111,完成'
rdd.map(F)
mapedRDD = ordersRDD。地圖(拉姆達 線:元組(線。分裂('' )))
mapedRDD。第一個()
#(u'1',u'2013-07-25 00:00:00.0',u'11599',u'CLOSED')
rdd.flatMap(F)
flatMapedRDD = ordersRDD。flatMap(拉姆達 線:線。分裂('' ))
flatMapedRDD。拿(4)
#[u'1',u'2013-07-25 00:00:00.0',u'11599',u'CLOSED']
sc.parallelize(c)中
lRDD = sc。並行化(範圍(1,10))
lRDD。第一個()
#1
lRDD。拿(10)
#[1,2,3,4,5,6,7,8,9]
rdd.reduce(F)
lRDD。減少(lambda x,y:x + y)
#45 - 這是1到9的總和
rdd.count()
lRDD。count()
#9 - 因爲lRDD中有9個元素
rdd.sortBy(keyFunc)
lRDD。收集()
#[1,2,3,4,5,6,7,8,9]
lRDD。sortBy(lambda x:- x)。收集()
#[9,8,7,6,5,4,3,2,1] - 可以任何方式對rdd進行排序,即ASC或DESC
rdd.top(NUM)
lRDD。頂部(3)
#[9,8,7]
rdd.take(NUM)
lRDD。拿(7)
#[1,2,3,4,5,6,7]
rdd.union(otherRDD)
l1 = sc。並行化(範圍(1,5))
l1。收集()
#[1,2,3,4]
l2 = sc。並行化(範圍(3,8))
l2。收集()
#[3,4,5,6,7]
lUnion = l1。聯盟(l2)
聯盟。收集()
#[1,2,3,4,3,4,5,6,7]
rdd.distinct()
lDistinct = lUnion。distinct()
lDistinct。收集()
#[2,4,6,1,3,5,7]
rdd.intersection(otherRDD)
lIntersection = l1。交叉路口(l2)
l交叉。收集()
#[4,3]
rdd.subtract(otherRDD)
lSubtract = l1。減去(l2)
lSubtract。收集()
#[2,1]
rdd.saveAsTextFile(path,compressionCodec)
lRDD。saveAsTextFile('lRDD_only')
#此方法將lRDD保存在HDFS主目錄下的lRDD_only文件夾下
聯盟。saveAsTextFile('lRDD_union','org.apache.hadoop.io.compress.GzipCodec')
#此方法將使用Gzip編×××壓縮的lUion保存在HDFS主目錄下的lRDD_union文件夾下
lSubtract。saveAsTextFile('lRDD_union','org.apache.hadoop.io.compress.SnappyCodec')
#此方法將使用Snappy編×××壓縮的lUion保存在HDFS主目錄下的lRDD_union文件夾下
rdd.keyBy(F)
ordersPairRDD = ordersRDD。keyBy(拉姆達 線:INT(線。分裂('')[ 0 ]))
ordersPairRDD。第一個()
#(1,u'1,2013-07-25 00:00:00.0,11599,CLOSED')
#這樣我們就可以創建RDD對了。
目前,這些是普通RDD的所有功能或方法,即沒有密鑰。在我的下一篇文章中,我將解釋有關RDD與多個示例片段的功能或方法。