首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

Spark数据操作—RDD操作(1)

Spark数据操作—RDD操作(1)

Spark RDD操作

RDD(Resilient Distributed Dataset),弹性分布式数据集是一个容错的,并行的数据结构,可以显式地将数据存储到磁盘和内存中,并能控制数据的分区。RDD有两种操作方式,转换(transformation)和动作(action)。转换是从现有的数据集创建一个新的数据集;动作在数据集上运行计算后,返回一个值给驱动程序。

    转换都是惰性的,只有到动作启动时才会真正去取得数据运算。

一、Spark RDD创建操作

RDD数据来源:两个数据来源创建RDD,一种是外部数据源,如HDFS或是本地文件系统等其他途径读入文件建立分布数据集;另一种是通过spark所提供的方法来创建数据,parallelize()创建一个能够并行操作的分布数据集。

1.外部数据源
通过SparkContext的textFile方法读入文件建立一个分布数据集。

    deftextFile(path: String, minPartitions: Int = defaultMinPartitions): RDD[String]

    val distFile1 = sc.textFile("data.txt") //本地当前目录下的文件
    val distFile2 = sc.textFile("hdfs://ip:port/user/names.txt") //HDFS文件
    val distFile3 = sc.textFile("file:/input/data.txt") //本地指定目录下的文件
    val distFile4 = sc.textFile("/input/data1.txt, /input/data2.txt") //读取多个文件

textFile方法第二个参数是用来设置文件的分片数量。默认情况下,Spark会为文件的每一个块创建一个分片。

【注】分片的数量绝不能小于文件块的数量

2.数据集合

    val data = Array(1,2,3,4,5,6,7,8,9)
    //parallelize(data, nums)中nums是设置分片数量的,默认情况下spark会自动根据集群情况进行设定的
    val distData = sc.parallelize(data, 3)
返回列表