Apache Spark核心API簡介

在這篇文章中,我將討論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與多個示例片段的功能或方法。


    發表評論
    所有評論
    還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
    相關文章