SparkR:数据科学家的新利器

  • 数据分组、聚合操作,如partitionBy(),groupByKey(),reduceByKey()等
  • RDD间join操作,如join(), fullOuterJoin(), leftOuterJoin()等
  • 排序操作,如sortBy(), sortByKey(), top()等
  • Zip操作,如zip(), zipWithIndex(), zipWithUniqueId()
  • 重分区操作,如coalesce(), repartition()
  • 其它杂项方法
  •  

    和Scala RDD API相比,SparkR RDD API有一些适合R的特点:

     

    • SparkR RDD中存储的元素是R的数据类型。
    • SparkR RDD transformation操作应用的是R函数。
    • RDD是一组分布式存储的元素,而R是用list来表示一组元素的有序集合,因此SparkR将RDD整体上视为一个分布式的list。Scala API 中RDD的每个分区的数据由iterator来表示和访问,而在SparkR RDD中,每个分区的数据用一个list来表示,应用到分区的转换操作,如mapPartitions(),接收到的分区数据是一个list而不是iterator。
    • 为了符合R用户经常使用lapply()对一个list中的每一个元素应用某个指定的函数的习惯,SparkR在RDD类上提供了SparkR专有的transformation方法:lapply()、lapplyPartition()、lapplyPartitionsWithIndex(),分别对应于Scala API的map()、mapPartitions()、mapPartitionsWithIndex()。