弹性分布式数据集(Resilient Distributed Dataset),简称 RDD,RDD 是 Spark 所提供的最基本的数据抽象,代表分布在集群中多台机器上的对象集合。Spark 有两种方法可以创建 RDD:

  • 用 SparkContext 基于外部数据源创建 RDD,外部数据源包括

    • HDFS 上的文件
    • 通过 JDBC 访问的数据库表
    • Spark shell 创建的本地对象集合
  • 在一个或多个已有 RDD 上执行转换操作来创建 RDD,这写转换操作包括:
    • 记录过滤
    • 对具有相同键值的记录做汇总
    • 多个 RDD 关联在一起
val rdd1 = sc.textFile("")
val rdd2 = sc.parallelize("")

1. 使用 SparkContext 的 textFile 方法得到 RDD 形式的数据引用:

scala> val rawData = sc.textFile("kddcup.data")
rawData: org.apache.spark.rdd.RDD[String]

2. 把数据从集群上获取到客户端

注意此时类型为RDD[String]rawData所引用的数据仍然在集群上存储。RDD 有许多方法,我们可以用其成员方法从集群读取数据到客户端机器上的 Scala REPL 中。最为简单的方法大概就是 first 了,该方法向客户端返回 RDD 的第一个元素(RDD 是弹性分布式数据集嘛):

scala> rawData.first
res0: String

first 方法可以对数据集做常规检查,但通常我们更想返回更多样例数据供客户端分析。

scala> rawData.count
res1: Long = 4898431

如果 count 方法获悉 RDD 只包含少量记录,可以用 collect 方法向客户端返回一个包含所有 RDD 内容的数组(Array[String])。此外还可以使用 take 方法该方法在 first 和 collect 之间做了一些折衷,可以向客户端返回一个包含指定数量记录的数组(Array[String]),

scala> val head = rawData.take(10)
head: Array[String] = Array(...)
scala> head(0)
res2: String
scala> head.apply(0)
res3: String

Spark 基础 —— RDD(创建 RDD)的两种方式相关推荐

  1. Java并发基础01. 传统线程技术中创建线程的两种方式

    传统的线程技术中有两种创建线程的方式:一是继承Thread类,并重写run()方法:二是实现Runnable接口,覆盖接口中的run()方法,并把Runnable接口的实现扔给Thread.这两种方式 ...

  2. Spark _22 _创建DataFrame的几种方式(一)

    创建DataFrame的几种方式 读取json格式的文件创建DataFrame 注意: json文件中的json数据不能嵌套json格式数据. DataFrame是一个一个Row类型的RDD,df.r ...

  3. java jobdetail_Spring创建JobDetail的两种方式

    一.Spring创建JobDetail的两种方式 定时任务两种方式,Spring很好的封装使用Quartz的细节,第一种方式是利用SPring封装的Quartz类进行特定方法的实现,第二种是通过透明的 ...

  4. java匿名启动线程_使用匿名内部类:来创建线程的两种方式

    [Java]基础31:创建线程的两种方式 谢谢你的观看. 今天是我自学Java的第31天. 你的观看便是对我最大的鼓励. 话不多说,开始今天的学习: 线程的创建有两种方式,昨天学习过其中的一种: 创建 ...

  5. 【并发技术01】传统线程技术中创建线程的两种方式

    传统的线程技术中有两种创建线程的方式:一是继承 Thread 类,并重写 run() 方法:二是实现 Runnable 接口,覆盖接口中的 run() 方法,并把 Runnable 接口的实现扔给 T ...

  6. ubuntu下创建定时任务的两种方式及常见问题解决方案

    ubuntu下创建定时任务的两种方式及常见问题解决方案 参考文章: (1)ubuntu下创建定时任务的两种方式及常见问题解决方案 (2)https://www.cnblogs.com/maboii/p ...

  7. ubuntu创建用户的两种方式

    ubuntu创建用户有两种方式: useradd和adduser 这两者,就像零件与产品的关系.useradd是DIY,需要自己调配,adduser是品牌机,拿来就能用. 对于创建一般用户来讲,use ...

  8. PyCharm创建app的两种方式

    PyCharm创建app的两种方式 方式1 1-1 在terminal中敲如下代码 python manage.py startapp xxx 1-2 在settings.py中INSTALLED_A ...

  9. Kafka创建Topic的两种方式

    创建topic的两种方式: 方法一: bin/kafka-topics.sh --create --topic topicname --replication-factor 1 --partition ...

  10. java创建线程的两种方式及区别

    本文将介绍创建线程的两种方式,示例代码在下面,复制粘贴即可 继承Thread类方式和实现Runnable接口方式 区别:由于在开发的过程中,很多的类都会用到继承的方式,如果采用继承的方式会让各个类之间 ...

最新文章

  1. poj1741(树的点分治)
  2. Spring Cloud Greenwich 正式发布,Hystrix 即将寿终正寝!
  3. getValue()方法 java_java.util.zip.CRC32.getValue()方法示例
  4. keras实现简单lstm_四十二.长短期记忆网络(LSTM)过程和keras实现股票预测
  5. C++虚继承(六) --- 虚继承浅析
  6. intx update task - IB_IBINTX_UPDATE
  7. C++中的lambda表达式和线程库
  8. 为旗下硬件产品服务,LG推出基于SLAM技术的3D摄像头
  9. 学习记录-网络基础知识(1)
  10. CP_EndPoint环境中的Hotspot Settings
  11. Java数据结构:数组模拟的队列(Queue)和环形队列(Circle Queue)
  12. 银行考试打字测试软件,银行考核打字,是否有什么练习软件?
  13. 2022.03.15 Arcmap栅格数据无法按照拟定范围进行重分类的解决方案
  14. 音频文件格式解析与编解码
  15. day11、3 - 思科模拟器介绍
  16. levelDB源码阅读-skiplist跳表 上
  17. 乱了夏末蓝了海,伤了初冬白了城。
  18. ICPC 2015 北京 Today Is a Rainy Day
  19. bmc linux 默认密码_系统下重置BMC密码方法
  20. PMP备考经典题库-敏捷专项练习题一(30道)

热门文章

  1. Bug--时区问题导致IDEA连接数据库失败
  2. java字符流输出流_JAVA语言之IO流字符串输入输出流
  3. linux中编辑好的源如何保存,Linux下, Eclipse C/C++ IDE下编辑好C/C++源程序之后要先保存!!!否则,就会……...
  4. mysql设置约束l命令_MYSQLl数据库主键设置长度控制_MySQL
  5. mysql数据库设置索引 以下_如何设置MySQL数据库表的索引总长度
  6. 三菱fx2n做从站的modbus通讯_三菱FX2N与昆仑通态(MCGS)无线编程口通讯例程
  7. Mysql中导入和导出数据库
  8. 【操作系统】处理机调度与死锁(三)
  9. FatFs源码剖析(转)
  10. 大快搜索获评“2018中国大数据基础软件领域领军企业”