与Clara一起学习Spark Scala:RDD。

我是Spark Scala的初学者,但我对此充满热情,请跟我来弄清楚!

因此,在对RDD进行一些魔术之前,让我们弄清楚什么是RDD和可以应用于其的转换类型。

RDD:

这是Resilient Distributed Dataset的缩写,它是一种数据结构,类似于Scala中的集合。

如何有一个新的RDD?

  • 从列表中:

值清单= 1至100
val rdd = sc.parallelize(列表)

结果是1到100之间的整数(数字)的RDD。

  • 来自文件:文本,csv…

val RDDFromFile = sc.textFile(“ path”)

结果是包含文件数据的RDD。

  • 创建RDD的最后一种方法是从“旧的”方法开始:

RDD是不可变的:您无法更改它,并且如果需要,可以对其进行转换以拥有新的转换,不是很清楚吗? 转到下一行!

我们可以将两种类型的转换应用于RDD,第一种是:

  • 生成新RDD的转换
  • 生成数字或数组的动作

转换:

映射:对RDD中的每个元素应用一个函数,然后为每个元素返回所有这些应用程序的结果的另一个RDD。

flatMap是相同的想法,但是将结果展平,返回返回的迭代器内容的RDD。

过滤器:我们使用此谓词函数,在这种情况下,我们返回已通过此谓词条件的元素的RDD。

与众不同 :它将删除重复的元素并返回没有重复的新RDD。

您可以在下面的资源中找到更多转换。

动作:

  • Collect():返回一个包含此RDD中所有元素的数组。
  • count():返回RDD中的元素数。
  • first():返回此RDD中的第一个元素。
  • foreach():将函数f应用于此RDD的所有元素。
  • max():返回最大值
  • min():返回最小值

您可以在下面的资源中找到更多操作。

经典的例子?

  • 计算字数:
val textFile = sc.textFile("hdfs://...") 
val counts = textFile.flatMap(line => line.split(" "))
.map(word => (word, 1))
.reduceByKey( _ + _ )
counts.saveAsTextFile("hdfs://...")

主要资源:

  • Spark文档
  • gitbook
  • 使用Scala和Spark进行大数据分析_ Coursera

这是一篇有关简单RDD的简短文章,我们的下一篇将是关于pair-RDD。

ps:我是克拉拉,以纪念斯卡拉!

和平