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

因此,在对RDD进行一些魔术之前,让我们弄清楚什么是RDD和可以应用于其的转换类型。
RDD:
这是Resilient Distributed Dataset的缩写,它是一种数据结构,类似于Scala中的集合。
- Aprendiendo Python desde cero,第2部分
- 儿童阶段是人生中最重要的阶段之一。
- 分块:这是强大思想的秘诀吗?
- 科技公司为什么要使其项目成为开源项目?
- 注意产品2017 —伦敦产品会议的回顾
如何有一个新的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:我是克拉拉,以纪念斯卡拉!
和平