为了账号安全,请及时绑定邮箱和手机立即绑定

Spark入门(三):RDD概述

标签:
大数据
1.RDD概述

Spark 对数据的核心抽象---弹性分布式数据集(Resilient Distributed Dataset,简
称 RDD)

1.1 不可变

RDD是一个不可变的分布式对象集合,一旦创建便不能修改。

1.2 分区

每个RDD都可被分为多个分区,分布在不同的节点机器之上

1.3 转换(transformation)

转化操作会由一个 RDD 生成一个新的 RDD,从已有的RDD派生出新的RDD,Spark会使用谱系图来记录不同RDD之间的依赖关系。Spark需要用这些信息来按需计算每个RDD,也可以依赖谱系图在持久化的RDD丢失部分数据时恢复所丢失的数据。

1.4 行动(action)

行动操作会对 RDD 计算出一个结果,并把结果返回到驱动器程序中,或把结
果存储到外部存储系统中

1.5 惰性计算

当创建RDD或者从RDD派生RDD,spark都不会执行真正的计算,只有在第一次行动(action)执行时,才会执行真正的计算

val input = sc.textFile("derby.log") //此处并没有真正的去读取文件
val count= input.count() // 程序运行到这里才会去读取文件,并执行计算

代码验证

scala> val rdd =sc.textFile("hdfs://master:9000/derby.log")
rdd: org.apache.spark.rdd.RDD[String] = hdfs://master:9000/derby.log MapPartitionsRDD[1] at textFile at <console>:24

scala> rdd.count
org.apache.hadoop.mapred.InvalidInputException: Input path does not exist: hdfs://master:9000/derby.log
  at org.apache.hadoop.mapred.FileInputFormat.singleThreadedListStatus(FileInputFormat.java:287)
  at org.apache.hadoop.mapred.FileInputFormat.listStatus(FileInputFormat.java:229)
  at org.apache.hadoop.mapred.FileInputFormat.getSplits(FileInputFormat.java:315)
  at org.apache.spark.rdd.HadoopRDD.getPartitions(HadoopRDD.scala:202)
  at org.apache.spark.rdd.RDD$$anonfun$partitions$2.apply(RDD.scala:252)
  at org.apache.spark.rdd.RDD$$anonfun$partitions$2.apply(RDD.scala:250)
  at scala.Option.getOrElse(Option.scala:121)
  at org.apache.spark.rdd.RDD.partitions(RDD.scala:250)
  at org.apache.spark.rdd.MapPartitionsRDD.getPartitions(MapPartitionsRDD.scala:35)
  at org.apache.spark.rdd.RDD$$anonfun$partitions$2.apply(RDD.scala:252)
  at org.apache.spark.rdd.RDD$$anonfun$partitions$2.apply(RDD.scala:250)
  at scala.Option.getOrElse(Option.scala:121)
  at org.apache.spark.rdd.RDD.partitions(RDD.scala:250)
  at org.apache.spark.SparkContext.runJob(SparkContext.scala:1958)
  at org.apache.spark.rdd.RDD.count(RDD.scala:1157)
  ... 48 elided

scala> 

val rdd =sc.textFile("hdfs://master:9000/derby.log")使用一个不存在的路径创建一个RDD,程序并没有报错,说明此时spark没有去读取文件。当调用count时,程序报错

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
JAVA开发工程师
手记
粉丝
8548
获赞与收藏
6550

关注作者,订阅最新文章

阅读免费教程

  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消