Spark简单数据分析---Spark学习笔记(2)

本文是Spark学习笔记的第二部分,主要讲解如何使用Spark建立弹性分布式数据集(RDD),包括从数据源创建RDD、数据处理、元组与case class的应用,以及RDD的缓存和概要信息统计。通过实例展示了RDD的转换操作,如filter、map和parse,以及如何使用StatCounter生成统计信息。
摘要由CSDN通过智能技术生成

上次学习Spark还是两个月前的事情,期中好多事情耽搁了,现在开始正式地学习Spark的使用。前面所学习的Scala基本知识也能用上了,终于可以从简单了解过渡到应用和实现的阶段。
这次学习的内容跟进的是《Spark高技术据分析》一章,里面的内容感觉很灵活,不仅是从最简单的Spark对数据的处理开始,而且其中稍带的Scala知识提及,可以加深对Scala的印象,从而运用起来就更加能了解其中的意义。
1.用Spark建立弹性分布式数据集(RDD)
弹性分布式数据集(Resilient Distributed Dataset):Spark所提供的基本抽象,代表分布在集群中多台机器上的对象集合。
SparkContext:负责协调集群上Spark作业的执行
有两种方式创建RDD:

  1. 基于外部数据源创建RDD
  2. 在一个过或多个RDD上执行转换操作来创建RDD,例如:过滤、汇总、关联等
    例如可以调用SparkContext如下方法创建一个自定义的RDD:
scala> val rdds=sc.parallelize(Array(1,2,3,4),4)

第一个参数代表并行化的对象集合,第二个参数代表分区的个数。分区就是数据集中的子集,Spark的并行单位就是分区。
也可以调用textFile方法来获取本地文件或者集群上的文件,来得到数据源:

scala> val rdd=sc.textFile("/home/coder-z/linkage")

如果路径是一个目录的话,会将目录中所有的文件数据作为RDD的输入。
假设我们是从文件读入数据的,那么得到的RDD中的数据基本单位是String,现在的问题就是如何将数据转换为我们想要的数据类型。
2.RDD数据处理
RDD动作:RDD的操作并不会导致集群的分布式计算,只有调用了action时分布式计算才会执行。
当我们得到一个RDD时,为了检验获得的数据集是否是指定文件中的,可以调用RDD的first方法:

scala> rdd.first

这里的first是一个方法,而不是字段。因为scala中,如果方法没有设置参数,那么可以直接省略括号。
现在执行如下动作:

val head=rdd.take(10)               //从rdd中抽取前10个数据记录
head.fliter(!isHead(_)).foreach(println)    //过滤掉头信息,并输出

head是一个Array[String]类型的数组,调用filter方法用来过滤数组中的信息。这行代码体现了Scala作为函数式编程的简易性,尽可能使用函数作为一种“变量”来使用。其中的isHead方法定义如下:

def isHead(line:String)=line.
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值