【发布时间】:2017-10-18 01:18:16
【问题描述】:
是否需要将 spark 作业的输出写入 hdfs 并从那里下载。或者直接写入本地文件系统。
【问题讨论】:
标签: apache-spark hdfs
是否需要将 spark 作业的输出写入 hdfs 并从那里下载。或者直接写入本地文件系统。
【问题讨论】:
标签: apache-spark hdfs
从根本上说,不,您不能使用 spark 的本机编写 API(例如 df.write.parquet)来写入本地文件系统文件。在 spark 本地模式下运行时(在您自己的计算机上,而不是集群上),您将从本地文件系统读取/写入。但是,在集群设置(独立/YARN/等)中,写入 HDFS 是唯一合乎逻辑的方法,因为分区 [通常] 包含在单独的节点上。
写入 HDFS 本质上是分布式的,而写入本地文件系统至少会涉及 2 个问题中的 1 个:
1) 写入节点本地文件系统意味着所有不同节点上的文件(1 个节点上的 5 个文件,另一个节点上的 7 个文件等)
2) 写入驱动程序的文件系统需要将所有执行程序的结果发送给驱动程序,类似于运行collect
您可以使用 Python 或 Scala 等语言内置的传统 I/O 操作写入驱动程序本地文件系统。
相关 SO:
Save a spark RDD to the local file system using Java
Spark (Scala) Writing (and reading) to local file system from driver
【讨论】: