Spark基础 | RDD编程

15人阅读 评论(0) 收藏 举报
分类:

Spark对数据的核心抽象——弹性分布式数据集Resilient Distributed Dataset,简称RDD
在Spark中,对数据的所有操作无外乎创建RDD、转化已有RDD以及调用RDD操作进行求值

1 RDD基础

Spark中的RDD就是一个不可变的分布式对象集合

每个RDD都被分为多个分区,这些分区运行在集群中的不同节点上。

RDD支持两种类型的操作:
转化操作transformation)和行动操作action

转化操作和行动操作的区别在于Spark计算RDD的方式不同。虽然你可以在任何时候定义新的RDD,但Spark只会惰性计算这些RDD。它们只有第一次在一个行动操作中用到时,才会真正计算

默认情况下,SparkRDD会在你每次对它们进行行动操作时重新计算。
默认不进行持久化对于大规模数据集是很有意义的:如果不会重用该RDD,我们就没有必要浪费存储空间,Spark可以直接遍历一遍数据然后计算结果。

2 创建RDD

两种方式:

  1. 读取外部数据集
    val lines = sc.textFile(“./README.md”)
  2. 在驱动器程序中对一个集合进行并行化
    val lines = sc.parallelize(list(“pandas”, “i like it”))

3 RDD操作

转化操作是返回一个新的RDD的操作,比如map() filter()

行动操作是向驱动器程序返回结果或把结果写入外部系统的操作,会触发实际计算,比如count() first()

4 向Spark传递函数

python 可以使用 lambda 表达式

scala 可以把定义的内联函数、方法的引用或静态方法传递给spark
所传递的函数及其引用的数据需要是可序列化的
如果Scala中出现NotSerializableException,通常问题就在于我们传递了一个不可序列化的类中的函数或字段

Java 函数需要作为实现Spark的org.apache.apark.api.java.function包中的任一函数接口的对象来传递。根据不同的返回类型,定义了一些不同的接口。

查看评论

CBuilder中使用管道技术实例

废话不多说,大家来看代码bool __fastcall TForm1::RunCmd(AnsiString cmd,TStringList *stringlist){    TMemoryStream...
  • pp616
  • pp616
  • 2003-07-02 15:59:00
  • 1102

Spark学习-RDD编程基础

1. RDD基础概念\quadSpark上开发的应用程序都是由一个driver programe构成,这个所谓的驱动程序在Spark集群通过跑main函数来执行各种并行操作。集群上的所有节点进行并行计...
  • taoyanqi8932
  • taoyanqi8932
  • 2017-03-09 22:29:14
  • 838

Spark基础入门(一)--------RDD基础

(一)、RDD定义 不可变  分布式对象集合 创建RDD有两种方式: (二)、RDD分区数 (三)、RDD操作 转换操作与行动操作...
  • silviakafka
  • silviakafka
  • 2017-01-12 15:29:03
  • 2351

spark基础之RDD详解

一 什么是RDD,有什么特点? RDD: Resilient Distributed Dataset,弹性分布式数据集。 特点: # 它是一种数据的集合 # 它可以被分区,每一个分区分布在不同...
  • zhanglh046
  • zhanglh046
  • 2017-10-27 08:54:49
  • 369

Spark学习—RDD编程

RDD:弹性分布式数据集(ResilientDistributed Dataset),是Spark对数据的核心抽象。RDD其实是分布式的元素集合。当Spark对数据操作和转换时,会自动将RDD中的数据...
  • a123demi
  • a123demi
  • 2017-05-09 14:13:41
  • 1250

Spark修炼之道(进阶篇)——Spark入门到精通:第四节 Spark编程模型(一)

作者:周志湖 网名:摇摆少年梦 微信号:zhouzhihubeyond 本节主要内容 Spark重要概念 弹性分布式数据集(RDD) 1. Spark重要概念 本节部分内容源自官方...
  • lovehuangjiaju
  • lovehuangjiaju
  • 2015-09-20 19:43:13
  • 12674

Spark (Python版) 零基础学习笔记(五)—— Spark RDDs编程

RDD基础概念创建RDD 创建RDD的方法: 1.载入外部数据集 2.分布一个对象的集合前边几次的笔记已经提到过多次了,因此,这里只列出几个注意事项: 1.利用sc.parallelize创建...
  • zhangyang10d
  • zhangyang10d
  • 2016-11-29 11:39:47
  • 1133

spark内核源码学习-RDD基础篇

spark内核源码学习-RDD基础篇1. RDD基本概念RDD,英文全称:resilient distributed dataset,中文名:弹性分布式数据集。它是可以并行处理的,错误容忍性强的数据集...
  • meichuntao
  • meichuntao
  • 2017-03-17 09:31:33
  • 383

Spark入门——1:RDD及编程接口

RDD是Spark的核心,也是整个Spark的架构基础。spark与mapreduce相比,前者提供了更加丰富的编程接口给程序猿们。所以下面主要说明RDD的基本概念,以及其重要接口。       R...
  • gongcan1219
  • gongcan1219
  • 2015-05-10 21:55:47
  • 1440

Spark入门(五):键值对RDD

1.创建PairRDD普通RDD转Pair RDD val rdd = sc.parallelize(Array("java","scala")) rdd.foreach(println) //jav...
  • soul_code
  • soul_code
  • 2017-08-14 16:30:24
  • 461
    个人资料
    持之以恒
    等级:
    访问量: 1883
    积分: 491
    排名: 10万+
    文章存档
    最新评论