PySpark学习: 数据输出

文章目录

  • [PySpark 数据输出](#PySpark 数据输出)
    • [将 RDD 转换为 python 对象](#将 RDD 转换为 python 对象)
      • [collect 算子](#collect 算子)
      • [reduce 算子](#reduce 算子)
      • [take 算子](#take 算子)
      • [count 算子](#count 算子)
    • [将 RDD 内容输出到文件中](#将 RDD 内容输出到文件中)
      • [saveAsTextFile 算子](#saveAsTextFile 算子)
        • [修改 rdd 分区为 1](#修改 rdd 分区为 1)
          • [方式 1: SparkConf 对象设置属性全局并行度为 1](#方式 1: SparkConf 对象设置属性全局并行度为 1)
          • [方式二: 创建 RDD 的时候设置 (parallelize方法传入 numSlices 参数为 1)](#方式二: 创建 RDD 的时候设置 (parallelize方法传入 numSlices 参数为 1))

PySpark 数据输出

将 RDD 转换为 python 对象

collect 算子

功能: 将 RDD 各个分区内的数据, 统一收集到Driver 中, 形成一个 LIst 对象

用法:

python 复制代码
rdd.collect()

返回值是一个 列表

python 复制代码
from pyspark.sql import SparkSession
spark = SparkSession.builder.master("local").appName("SparkName").getOrCreate()
sc = spark.sparkContext

rdd = sc.parallelize((('a', 1), ('b', 3), ('c', 9), ('d', 7), ('e', 5)))
rdd2 = rdd.sortBy(lambda x: x[1], ascending=False, numPartitions=3)
print(rdd2.collect()) # [('c', 9), ('d', 7), ('e', 5), ('b', 3), ('a', 1)]

reduce 算子

功能: 对RDD对象根据传入的逻辑进行聚合

语法:

python 复制代码
rdd.reduce(func) 
# func: (T, T) -> T
# 传入 2 个参数, 1 个返回值, 返回值和参数要求类型一致
python 复制代码
from pyspark.sql import SparkSession
spark = SparkSession.builder.master("local[*]").appName("Spark_test").getOrCreate()
sc = spark.sparkContext

# 准备 RDD
rdd = sc.parallelize([1, 2, 3, 4, 5])

# reduce 算子,输出为list对象
num = rdd.reduce(lambda x, y: x + y)
print(num) # 15

take 算子

功能: 取出 RDD 的前 N 个元素, 组成 list 返回

python 复制代码
from pyspark.sql import SparkSession
spark = SparkSession.builder.master("local").appName("PySpark").getOrCreate()
sc = spark.sparkContext

rdd = sc.parallelize([1, 2, 3, 4, 5])
num = rdd.take(3)
print(num) # [1, 2, 3]

result = rdd.take(rdd.count())
print(result) # [1, 2, 3, 4, 5]

count 算子

功能: 计算RDD 有多少条数据, 返回值是一个数字

python 复制代码
from pyspark.sql import SparkSession
spark = SparkSession.builder.master("local").appName("PySpark").getOrCreate()
sc = spark.sparkContext

rdd = sc.parallelize([1, 2, 3, 4, 5])
count = rdd.count()
print(count) # 5

将 RDD 内容输出到文件中

saveAsTextFile 算子

功能: 将 RDD 的数据写入文本文件中 , 支持本地写入, hdfs 等文件系统

python 复制代码
from pyspark.sql import SparkSession
spark = SparkSession.builder.master("local[*]").appName("Spark_test").getOrCreate()
sc = spark.sparkContext

rdd = sc.parallelize([1, 2, 3, 4,5])
rdd.saveAsTextFile("Spark_test.txt")
spark.stop()
修改 rdd 分区为 1
方式 1: SparkConf 对象设置属性全局并行度为 1
python 复制代码
from pyspark.sql import SparkSession
spark = SparkSession.builder.master("local[*]").appName("Spark_test").getOrCreate() 

# 加上这一行
spark.conf.set("spark.default.parallelism", "1")

sc = spark.sparkContext 

这种写法也可以写在spark的创建步骤中

python 复制代码
spark = SparkSession.builder.master("local[*]").appName("Spark_test").config("spark.default.parallelism", "1").getOrCreate()
方式二: 创建 RDD 的时候设置 (parallelize方法传入 numSlices 参数为 1)
python 复制代码
rdd = sc.parallelize([1, 2, 3, 4,5], numSlices = 1) 

rdd = sc.parallelize([1, 2, 3, 4,5], 1) 
相关推荐
朝朝辞暮i几秒前
C++ 第 22 课:const —— 不允许随便修改的数据
开发语言·c++·算法
web打印社区6 分钟前
JS 静默打印怎么做:纯前端为什么不行,以及最小可跑通写法
开发语言·前端·javascript·websocket·网络协议·http·pdf
大圣编蚕7 分钟前
C语言怎么写小游戏?从零开始做一个贪吃蛇
c语言·开发语言
小小张说故事7 分钟前
pip 安装慢、超时、报错?一份国内源配置 + 9 个高频报错对照表
python
bing.shao10 分钟前
让机器从数据中生成本领:诺因Knowin通用具身智能生成式学习架构GLOW深度解析
学习·架构
在世修行13 分钟前
干货:长任务反馈
python·长任务
东方芷兰18 分钟前
Agent 技术摘要 05 —— BP、SaaS、B2B、C2B、B2C
java·笔记·python·语言模型·自然语言处理
阳光九叶草LXGZXJ21 分钟前
达梦数据库-学习-69-DM9主备集群部署
linux·运维·服务器·数据库·sql·学习
Chen—LSN28 分钟前
数据结构——拿捏复杂度
java·c语言·开发语言·数据结构·经验分享·笔记·算法
Molesidy33 分钟前
【Embedded Development】【高级MCU篇】基于野火STM32H750XBH6_Pro开发板的高级MCU开发学习之1点亮led
stm32·单片机·学习