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与多个示例片段的功能或方法。


    猜你喜欢

    转载自blog.51cto.com/14009535/2334605
    今日推荐