请说明 PySpark 与 Hadoop 生态集成的方式,并阐述在 HDFS 上读写数据的具体操作步骤。
考察说明
考察对 PySpark 与 Hadoop 集成机制及 HDFS 数据读写 API 的掌握程度。
回答思路
- 【回答框架 1】PySpark 与 Hadoop 集成主要基于 Spark 自身对 Hadoop 生态的兼容:Spark 可以读取 HDFS、Hive、HBase 等 Hadoop 组件的数据,其底层通过 Hadoop 的 InputFormat/OutputFormat 与 HDFS 交互。PySpark 作为 Spark 的 Python 接口,通过 Py4J 调用 JVM 中的 Spark 核心,因此天然支持 Hadoop 文件系统。
- 【回答框架 2】在 HDFS 上读写数据,spark.read 与 spark.write 是主要入口:spark.read.csv('/path') 可读取 HDFS 上的文件,spark.write.csv('/path') 写入 HDFS。路径需使用 hdfs:// 前缀或默认文件系统配置。
- 【回答框架 3】具体操作:读取时,使用 DataFrameReader 指定格式(如 csv、parquet、json)和路径;写入时,使用 DataFrameWriter 指定格式和路径,可设置分区、压缩等选项。
- 【回答框架 4】确保 Hadoop 配置正确:需在 Spark 配置中设置 fs.defaultFS 指向 HDFS,或使用完整路径。
- 【关键点 1】PySpark 通过 Py4J 调用 JVM,兼容 Hadoop 生态。
- 【关键点 2】读写 HDFS 使用 spark.read 和 spark.write,支持多种格式。
- 【关键点 3】路径需指向 HDFS,可通过 hdfs:// 前缀或配置默认文件系统。
- 【易错点 1】误以为 PySpark 与 Hadoop 集成需要额外安装 Hadoop 客户端,实际只需正确配置核心-site.xml 等文件。
- 【易错点 2】忽略 HDFS 文件权限,导致读取或写入失败。
- 【易错点 3】未指定文件格式或路径错误,导致读写异常。