动手实战创建RDD的三种方式

1.通过已经存在的scala集合

2.通过hdfs,hbase等
从 hadoop中的hdfs读取数据。
这里写图片描述
toDebugString可以查看RDD创建的过程
1.首先要从hadoop中读取数据,因此会有mapred.FileInputFormat,共有88个文件
2.hadoopRDD就把物理层分片转化成逻辑层分片。
3.MaPartitionsRDD就可以把读取出来的数据做一次转换,把索引号去掉
这里写图片描述
3.其他的rdd转换
这里写图片描述
RDD支持两种操作:转换(transformation),即从现有的数据集创建一个新的数据集;动作(action),即在数据集上进行计算后,返回一个值给Driver程序。
例如:map就是一种转换,它将数据集每一个元素都传递给函数,并返回一个新的分布式数据集表示结果。reduce是一种动作,通过一些元素将所有元素叠加起来,
并将最终结果返回给Driver,其次另一个reduceByKey,能返回一个分布式数据集。
单词统计:
这里写图片描述
从下面的过程可以看出来每个 RDD之间存在的依赖。
这里写图片描述

Spark创建RDD方式有以下几种: 1. 从一个已有的集合或序列中创建RDD:通过SparkContext.parallelize()方法或SparkContext.makeRDD()方法来创建RDD。示例代码如下: ```python from pyspark import SparkContext sc = SparkContext("local", "RDD Example") data = [1, 2, 3, 4, 5] rdd = sc.parallelize(data) ``` 2. 通过读取外部数据源来创建RDD:通过SparkContext.textFile()或SparkContext.wholeTextFiles()方法来读取外部数据源创建RDD。示例代码如下: ```python from pyspark import SparkContext sc = SparkContext("local", "RDD Example") text_file = sc.textFile("/path/to/textfile") ``` 3. 通过转换已有的RDD创建新的RDD:通过对已有的RDD进行转换操作生成新的RDDRDD转换操作包括map、filter、flatMap、union等等。示例代码如下: ```python from pyspark import SparkContext sc = SparkContext("local", "RDD Example") data = [1, 2, 3, 4, 5] rdd = sc.parallelize(data) # 转换操作 squared_rdd = rdd.map(lambda x: x*x) ``` 4. 通过从存储系统中读取数据创建RDD:通过SparkContext.newAPIHadoopFile()或SparkContext.hadoopFile()方法来从存储系统(如HDFS、S3等)中读取数据创建RDD。示例代码如下: ```python from pyspark import SparkContext, SparkConf from pyspark.rdd import PortableDataStream conf = SparkConf().setAppName('HadoopRDD') sc = SparkContext(conf=conf) rdd = sc.newAPIHadoopFile( path='/path/to/data', inputFormatClass='org.apache.hadoop.mapreduce.lib.input.TextInputFormat', keyClass='org.apache.hadoop.io.LongWritable', valueClass='org.apache.hadoop.io.Text') ``` 5. 通过并行化已有的RDD创建新的RDD:通过对已有的RDD进行并行化操作生成新的RDDRDD的并行化操作包括repartition、coalesce等等。示例代码如下: ```python from pyspark import SparkContext sc = SparkContext("local", "RDD Example") data = [1, 2, 3, 4, 5] rdd = sc.parallelize(data) # 并行化操作 repartitioned_rdd = rdd.repartition(2) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值