Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用Pyspark在HDFS中将文件从一个目录移动到另一个目录_Python_Apache Spark_Pyspark_Hdfs - Fatal编程技术网

Python 使用Pyspark在HDFS中将文件从一个目录移动到另一个目录

Python 使用Pyspark在HDFS中将文件从一个目录移动到另一个目录,python,apache-spark,pyspark,hdfs,Python,Apache Spark,Pyspark,Hdfs,我试图从一个目录中读取所有JSON文件的数据,并使用下面的代码将它们存储在Spark Dataframe中。(很好用) 但是当我尝试用多个文件保存数据帧时,使用下面的代码 df.write.json("hdfs:///user/another_dir/to_save_dir/") 它没有按预期存储文件,并抛出错误,如to\u save\u dir已经存在 我只想像从源目录到目标目录一样保存文件 编辑: 问题是,当我读取多个文件并希望将其写入一个目录时,Pyspark中的过程

我试图从一个目录中读取所有JSON文件的数据,并使用下面的代码将它们存储在Spark Dataframe中。(很好用)

但是当我尝试用多个文件保存数据帧时,使用下面的代码

df.write.json("hdfs:///user/another_dir/to_save_dir/")
它没有按预期存储文件,并抛出错误,如
to\u save\u dir
已经存在

我只想像从源目录到目标目录一样保存文件

编辑:


问题是,当我读取多个文件并希望将其写入一个目录时,Pyspark中的过程是什么?我问这个问题的原因是,一旦spark加载了它创建一个数据帧的所有文件,并且每个文件都是该数据帧中的一行,我应该如何继续为数据帧中的每一行创建新文件。您得到的错误非常清楚,您试图写入的位置似乎已经存在。您可以通过指定
模式
来选择覆盖它:

df.write.mode("overwrite").json("hdfs:///user/another_dir/to_save_dir/")
但是如果您只想在HDFS中将文件从一个位置移动到另一个位置,则无需在Spark中读取文件,然后再写入。相反,请尝试使用:


感谢@blackishop的回复,但我想使用Pyspark移动数据,问题是,当我读取多个文件并希望将其写入目录时,Pyspark中的过程是什么?我问这个问题的原因是,一旦spark加载了所有文件,它就会创建一个数据帧,并且每个文件都是该数据帧中的一行,那么我应该如何继续为该数据帧中的每一行创建新文件呢dataframe@DanialShabbir请问您为什么要使用Pyspark来移动文件?在目标文件夹中不能像这样获得相同的文件名和文件夹结构。如果您想要完全相同的文件名和结构,则必须逐个处理一个文件。另一种解决方案是在编写数据帧时使用
partitionBy
df.withColumn(“文件名”,输入文件名())。write.partitionBy(“文件名”)…
。partitionBy()正在创建Part-1xxxx.json文件不是一个完整的文件,但无论如何我使用了dfs api。谢谢,伙计
df.write.mode("overwrite").json("hdfs:///user/another_dir/to_save_dir/")
conf = sc._jsc.hadoopConfiguration()
Path = sc._gateway.jvm.org.apache.hadoop.fs.Path
FileUtil = sc._gateway.jvm.org.apache.hadoop.fs.FileUtil

src_path = Path(src_folder)
dest_path = Path(dest_folder)

FileUtil.copy(src_path.getFileSystem(conf), 
              src_path,
              dest_path.getFileSystem(conf),
              dest_path,
              True,
              conf)