spark中pyspark :add

一、RDD的介绍(了解)

RDD:resilient distributed dataset(弹性分布式数据集合 ) spark的计算核心,spark采用rdd管理数据

  • RDD

    • RDD是spark的一种数据模型(规定数据的存储结构和计算方法)

    • python中的数据模型

      • list [] 可以重复存储数据 append

      • set{} 不允许重复存储

      • dict {k:v} get(key)

    • RDD的模型可以对内存数进行共享管理

  • 分布式

    • 数据可以在多台服务器上同时计算执行

  • 弹性

    • 可以根据计算的需求将数据进行分区拆分,本质就是将数据分成多份

二、RDD的特点(了解)

  • 分区

    • 可以将计算的海量数据分成多份,需要分成多少可分区可以通过方法指定

    • 每个分区都可以对应一个task线程执行计算

  • 只读

    • rdd中的数据不能直接修改,需要通过方法计算后得到一个新的rdd

    • rdd本身存储的数只能读取

  • 依赖

    • rdd之间是有依赖关系的

    • 新的rdd是通过旧的rdd计算得到

  • 缓存

    • 可以将计算的中结果缓存起来,如果后续计算错误时,可以从缓存位置重新计算

    • 将数据存储在内存或本地磁盘

    • 作用是容错

    • 缓存在执行计算任务程序结束后会释放删除

  • checkpoint

    • 作用和缓存一样

    • checkpoint可以将数据存储在分布式存储系统中,比如hdfs

三、创建RDD数据(掌握)

将需要计算的数据转为rdd的数据,就可以利用spark的内存计算方法进行分布式计算操作,这些计算方法就是有rdd提供的

rdd数据的转化方法是有sparkcontext提供的,所以需要先生成sparkcontext,sparkcontext中还包含资源申请和任务划分功能

SparkContext称为Spark的入口类

3-1 Python数据转化为rdd

# 导入sparkcontext
from pyspark import SparkContext
​
# 创建SparkContext对象
sc = SparkContext()
​
# 将Python数据转为rdd
# data_int = 10  # 数值类型不能转化rdd
# 能for循环遍历的数据都能转为rdd
data_str = 'abc'
data_list = [1, 2, 3, 4]
data_dict = {'a': 1, 'b': 2}
data_set = {1, 2, 3, 4}
data_tuple = (1, 2, 3, 4)
rdd = sc.parallelize(data_tuple)
​
# rdd的计算
​
​
# rdd的数据输出展示
# 获取所有rdd数据
res = rdd.collect()
print(res)

3-2 文件数据(hdfs)转化为rdd

# 将读取的hdfs文件数据转为rdd
from pyspark import SparkContext
​
# 生成SparkContext类对象
sc = SparkContext()
​
# 读取文件数据转为rdd
rdd1  = sc.textFile('hdfs://node1:8020/data')
rdd2  = sc.textFile('/data/words.txt')
​
# 查看数据
res = rdd1.collect()
print(res)
res = rdd2.collect()
print(res)
​

3-3 rdd的分区

  • python数据转发的分区数指定

# RDD分区使用
# 导入sparkcontext
from pyspark import SparkContext
​
# 创建SparkContext对象
sc = SparkContext()
​
# 创建生成rdd是可以指定分区数
# Python数据转为rdd指定
# numSlices 可以指定分区数
rdd_py = sc.parallelize([1,2,3,4,5,6],numSlices=10)
​
​
# rdd计算
​
# 查看rdd分区数据
re
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值