pyspark读写hdfs,parquet文件

本文介绍如何利用PySpark读取HDFS上的Parquet格式数据,并将其写入指定路径,涵盖SparkSession的创建、数据读写等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#-*- coding:utf-8 -*-
import  json
from pyspark.sql import SparkSession
#连接集群
spark = SparkSession.builder.master("yarn-client").appName("test").getOrCreate()
#读取数据,数据位置‘hdfs://bd01:8020/a/b/part*.parquet’
df=spark.read.format('parquet').load('hdfs://bd01:8020/a/b/part*.parquet')
print df.show()
#写数据到‘data_result_path’位置,overwrite方式可更改
data.write.mode('overwrite').parquet(data_result_path)

df:
在这里插入图片描述

### HDFS与YARN的区别和联系 #### 1. 功能定义 HDFS(Hadoop Distributed File System)是一个分布式文件系统,主要用于存储大规模数据,适合一次写入、多次读取的场景[^1]。而 YARN(Yet Another Resource Negotiator)是一个资源管理和调度框架,负责管理集群中的计算资源,并为应用程序分配这些资源[^3]。 #### 2. 架构组成 HDFS 的核心组件包括 NameNode 和 DataNode。NameNode 负责管理文件系统的命名空间和客户端对文件的访问,DataNode 则负责实际的数据存储和读写操作[^1]。 YARN 的架构由 ResourceManager、NodeManager 和 ApplicationMaster 组成。ResourceManager 管理整个集群的资源,NodeManager 负责单个节点上的资源管理和任务执行,ApplicationMaster 则协调应用程序的资源需求并管理任务运行状态[^3]。 #### 3. 数据处理方式 HDFS 提供了高容错性和可扩展性,通过多副本机制确保数据可靠性[^2]。在数据写入时,HDFS 使用流水线复制机制将数据块分布到多个 DataNode 上,以实现冗余存储[^3]。 YARN 则专注于任务调度和资源分配,允许不同的计算框架(如 MapReduce、Spark 等)在其上运行。它通过灵活的资源管理策略支持多种类型的工作负载。 #### 4. 区别 - **功能定位**:HDFS 是一个存储系统,用于管理大规模数据的持久化存储;YARN 是一个计算框架,用于管理计算资源和任务调度。 - **职责范围**:HDFS 关注数据的可靠性和高效存储,YARN 则关注计算任务的资源分配和执行效率。 - **性能优化方向**:HDFS 优化了数据的顺序读写性能和容错能力[^2],而 YARN 优化了任务的并发执行能力和资源利用率。 #### 5. 联系 HDFS 和 YARN 是 Apache Hadoop 生态系统中的两个核心组件,它们协同工作以支持大数据处理任务。具体来说: - YARN 可以从 HDFS 中读取数据并将其分发给计算任务。例如,在 MapReduce 框架中,输入数据通常存储在 HDFS 中,而 MapReduce 任务则由 YARN 调度和执行。 - HDFS 提供的数据存储服务为 YARN 的计算任务提供了可靠的输入和输出支持。两者共同构成了一个完整的数据存储和计算平台[^3]。 ```python # 示例:使用 PySpark 读取 HDFS 数据并在 YARN 上运行任务 from pyspark.sql import SparkSession spark = SparkSession.builder \ .appName("HDFS_YARN_Example") \ .master("yarn") \ .getOrCreate() # 从 HDFS 读取数据 data = spark.read.format("csv").option("header", "true").load("hdfs://namenode:8020/input.csv") # 执行计算任务 result = data.groupBy("category").count() # 将结果写回 HDFS result.write.format("parquet").save("hdfs://namenode:8020/output.parquet") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值