官网原文: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的并行化集合:

本文介绍了Spark中RDD的创建方法,包括从外部数据集加载和通过并行集合创建。详细讲解了转换操作如map、filter和reduceByKey,以及行动操作如count、collect和reduce。此外,还讨论了RDD的持久化、分区策略以及如何设置默认分区数。
最低0.47元/天 解锁文章
2397

被折叠的 条评论
为什么被折叠?



