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



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

你有多个选择:

  • 将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)
  • 将文件保存在本地,并使用第三方库- hdfs3 -将文件复制到HDFS
from hdfs3 import HDFileSystem
hdfs = HDFileSystem()
hdfs.cp("local/file.parquet", "/path/on/hdfs")