如何将使用 Pandas 在 Spark 集群上编写的文件移动到 HDFS?

Posted

技术标签:

【中文标题】如何将使用 Pandas 在 Spark 集群上编写的文件移动到 HDFS?【英文标题】:How to move files written with Pandas on Spark cluster to HDFS? 【发布时间】:2021-02-16 18:10:42 【问题描述】:

我正在使用集群模式运行 Spark 作业并使用 Pandas 写入一些文件,我认为它正在写入临时目录,现在我想移动这些文件或将这些文件写入 HDFS。

【问题讨论】:

【参考方案1】:

您有多种选择:

将 Pandas DataFrame 转换为 PySpark DataFrame 并简单地将其保存到 HDFS 中
spark_df = spark.createDataFrame(pandas_df)
spark_df.write.parquet("hdfs:///path/on/hdfs/file.parquet")
使用 Pandas 将文件保存到本地并使用subprocess 将文件复制到 HDFS
import subprocess

command = "hdfs dfs -copyFromLocal -f local/file.parquet /path/on/hdfs".split()
result = subprocess.run(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE)

print(result.stdout)
print(result.stderr)
在本地保存文件并使用 3rd 方库 - hdfs3 - 将文件复制到 HDFS
from hdfs3 import HDFileSystem

hdfs = HDFileSystem()
hdfs.cp("local/file.parquet", "/path/on/hdfs")

【讨论】:

以上是关于如何将使用 Pandas 在 Spark 集群上编写的文件移动到 HDFS?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Spark/Scala 在 HDFS 上编写/创建 zip 文件?

如何在 Pandas DataFrame 上编写条件数组操作

在 Spark 列/数据框上编写自定义 Spark 函数

Spark UDF:如何在每一行上编写一个 UDF 以提取嵌套结构中的特定值?

如何将 Parquet 文件读入 Pandas DataFrame?

即将发布的 Apache Spark 3.2 将内置 Pandas API