Spark RDD 初探——Spark开发学习笔记(二)

本文深入探讨了Spark中的核心概念——弹性分布式数据集(RDD)。介绍了如何通过Driver程序创建RDD,包括从数据集和外部数据源生成RDD。详细阐述了RDD的Transformation和Action操作,并讨论了RDD的持久化以及广播变量和计数器等共享变量的使用。文章以Java开发为背景,提供了实例代码和关键操作的解释。
摘要由CSDN通过智能技术生成

Spark RDD 初探

弹性分布式数据集(Resilient Distributed Dataset,RDD)是Spark中的核心概念,基本上所有的Spark运算操作对象都是RDD,我们今天就来简单认识一下这个RDD。
说明:由于本文的开发基于Java,因此所有的观点都是基于Java的。

一、RDD 创建

RDD是一种数据集,初步我们可以将其想象成一个数组类似的数据结构,先不去管实际的存储结构。RDD的创建方式可以划分成两大类。

(一)从Driver程序的数据集生成RDD

直说就是程序本身数据生成RDD,不是从外部导入的数据。一般是通过SparkContext对象(实际为JavaSparkContext)的parallelize方法来创建RDD。

SparkSession session = SparkSession.builder().getOrCreate();
JavaSparkContext sparkContext = JavaSparkContext.fromSparkContext(session.sparkContext());
List<Integer> list1 = Arrays.asList(1, 2, 3, 4, 5);
List<String> list2 = Arrays.asList("hello", "RDD", "Spark");
JavaRDD<Integer> myRDD1 = sparkContext.parallelize(list1);
JavaRDD<String> myRDD2 = sparkContext.parallelize(list2);

上述代码中myRDD1和myRDD2均为通过程序的数据集生成的RDD。

Java开发中RDD(实际为JavaRDD)只能通过List数据类型来生成。

(二)从外部数据集生成RDD

从外部数据集加载的相关方法有很多,包括(可能不限于)如下列举的方法。

  • textFile方法,从文本文件加载。
  • hadoopFile方法,从Hadoop文件加载。
  • sequenceFile方法。
  • objectFile方法,读取序列化文件。
  • binaryFiles方法,以二进制格式直接读取Hadoop MapReduce计算的结果文件。
  • hadoopRDD方法,读取HBase文件。
JavaRDD<Integer> myRDD = sparkContext.textFile(inputFile);

二、RDD 操作

RDD的操作分为两大类,分别是Transformation(转换)和Action(动作)。Spark进行Transformation时采用lazy模式,即计算不是立刻执行,只有当Action操作触发时才会进行启动运算。

  • Transformation:由一个RDD生成另一个RDD的过程。
    • map(function)
      • 对RDD中的每个元素进行function操作,生成新元素构成的新RDD返回。
    • filter(function)
      • 对RDD中的元素进行过滤,如果调用函数返回true则保留,返回过滤后的RDD。
    • flatMap(function)
      • 与map类似,但是每个元素调用之后可能会产生0至多个元素,将这些所有的元素全部扁平化构成一个新的RDD,要求function的返回类型为Se
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值