如何将使用 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 UDF:如何在每一行上编写一个 UDF 以提取嵌套结构中的特定值?