RDD的创建

有3种方式可以创建RDD。分别如下介绍:

1、由集合创建RDD

Spark会将集合中的数据拷贝到集群上去,形成一个分布式的数据集合,也就是一个RDD;相当于集合中的一部分数据会到一个节点上,而另一部分数据会到其他节点上;然后就可以用并行的方式来操作这个分布式数据集合。

val rdd = sc.parallelize(List(1,2,3,4,5,6)
rdd.count

val rdd = sc.parallelize(List(1,2,3,4,5,6),3)
rdd.count

上面两种写法结果是一样的,只是分区数不一样。通过WebUI可以发现它们的任务数量不一样。从RDD的特性来看,有多少个分区就有多少个任务,它们之间是一 一对应的。

2、加载文件成RDD

通过调用SparkContext的textFile()方法,可以读取本地文件或HDFS文件创建RDD,文件中的每一行就是RDD中的一个元素。

# 准备处理的数据:hello.txt
hello	world	hello
hello	welcome	world

#Spark处理本地文件
val distFile = sc.textFile("file:///root/hello.txt")

#Spark处理HDFS上的文件
cd ~/data
hadoop fs -put hello.txt /		#上传本地文件到HDFS
val disFile = sc.textFile("hdfs://192.168.48.141:8020/hello.txt")
disFile.count

注意事项:
(1)如果是在本地测试本地文件,有一份文件即可;如果是在Spark集群上测试本地文件,需要将文件拷贝到所有Worker Node上。因为Spark是分布式执行的,任务会被分配到不同的节点上去执行。
(2)Spark的textFile()方法支持针对目录、压缩文件以及通配符进行RDD创建。
————————————————
 

textFile("/my/directory")
textFile("/my/directory/*.txt")

(3)Spark默认会为HDFS文件的每一个数据块创建一个分区,但是也可以通过textFile()的第二个参数手动设置分区数量,只能比数据块数量多,不能比数据块数量少。

3、通过RDD的转换形成新的RDD

具体如下面(RDD的转换算子)的描述。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值