RDD的创建、操作

本文介绍了Spark中RDD的创建方法,包括从外部数据集加载和通过并行集合创建。详细讲解了转换操作如map、filter和reduceByKey,以及行动操作如count、collect和reduce。此外,还讨论了RDD的持久化、分区策略以及如何设置默认分区数。
摘要由CSDN通过智能技术生成

官网原文:There are two ways to create RDDs: parallelizing an existing collection in your driver program, or referencing a dataset in an external storage system, such as a shared filesystem, HDFS, HBase, or any data source offering a Hadoop InputFormat.

RDD可以通过两种方式创建:

  • 第一种:读取一个外部数据集。比如,从本地文件加载数据集,或者从HDFS文件系统、HBase、Cassandra、Amazon S3等外部数据源中加载数据集。Spark可以支持文本文件、SequenceFile文件(Hadoop提供的 SequenceFile是一个由二进制序列化过的key/value的字节流组成的文本存储文件)和其他符合Hadoop InputFormat格式的文件。

  • 第二种:调用SparkContext的parallelize方法,在Driver中一个已经存在的集合(数组)上创建。

从外部数据集中加载数据创建RDD

Spark可以从Hadoop支持的任何存储源创建分布式数据集,包括本地文件系统,HDFS,Cassandra,HBase,Amazon S3等.Spark支持test files,SequenceFiles和任何其他Hadoop InputFormat。

文本文件RDDS可以使用创建SparkContext的textFile()方法。此方法需要一个URI的文件(本地路径的机器上,或一个hdfs://,s3a://等URI),并读取其作为行的集合。这是一个示例调用:

scala> val distFile = sc.textFile("data.txt")
scala> val lines =sc.textFile("file:///user/hadoop/word.txt")
scala> val lines =sc.textFile("hdfs://localhost:9000/user/hadoop/word.txt")
distFile: org.apache.spark.rdd.RDD[String] = data.txt MapPartitionsRDD[10] at textFile at <console>:26

创建后,distFile可以通过数据集操作执行操作。例如,我们可以使用map和reduce操作添加所有行的大小,如下所示:distFile.map(s => s.length).reduce((a, b) => a + b)。

如果是读本地的文件,必须保证所有节点上都有这一份数据。比如standalone模式,需要确保每个节点上都有inputsource。

通过并行集合(数组)创建RDD

复制集合的元素以形成可以并行操作的分布式数据集。例如,以下是如何创建包含数字1到5的并行化集合:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值