2024-06-07 21:55:16 发布
网友
有谁能给我一个提示,告诉我如何使用PyArrow's new filesystem interface(即upload,copyFromLocal)将文件从本地文件系统复制到HDFS文件系统
我反复阅读了文档,并尝试了一些方法(将copy_file()与FS uri一起使用),但似乎都不起作用。legacy HDFS API的用法很简单,但它已被弃用,尽管新的API似乎不完整。当然,在文件描述符之间移动数据块是一个解决方案,但是为什么copy_file()存在呢
新(或旧)文件系统API中没有用于在文件系统之间传输文件的函数
Of course moving chunks of data among file descriptors is a solutions
我不确定这是否是您所想的,但这里有一个简单的实用程序(和演示),介绍如何从python执行此操作:
import filecmp import pyarrow.fs as pafs BATCH_SIZE = 1024 * 1024 def transfer_file(in_fs, in_path, out_fs, out_path): with in_fs.open_input_stream(in_path) as in_file: with out_fs.open_output_stream(out_path) as out_file: while True: buf = in_file.read(BATCH_SIZE) if buf: out_file.write(buf) else: break local_fs = pafs.LocalFileSystem() s3fs = pafs.S3FileSystem() in_path = '/tmp/in.data' out_path = 'mybucket/test.data' back_out_path = '/tmp/in_copy.data' transfer_file(local_fs, in_path, s3fs, out_path) transfer_file(s3fs, out_path, local_fs, back_out_path) files_match = filecmp.cmp(in_path, back_out_path) print(f'Files Match: {files_match}')
我希望transfer_file能有好的表现。可能有一些情况(例如,从S3读取)可以从使用read_at的并行读取中获益,这需要更高的复杂性,但也应该是可行的
transfer_file
read_at
but why copy_file() exists then?
copy_file将文件从文件系统上的一个名称复制到同一文件系统上的另一个名称。它不能用于在不同的文件系统之间复制文件
copy_file
新(或旧)文件系统API中没有用于在文件系统之间传输文件的函数
我不确定这是否是您所想的,但这里有一个简单的实用程序(和演示),介绍如何从python执行此操作:
我希望
transfer_file
能有好的表现。可能有一些情况(例如,从S3读取)可以从使用read_at
的并行读取中获益,这需要更高的复杂性,但也应该是可行的copy_file
将文件从文件系统上的一个名称复制到同一文件系统上的另一个名称。它不能用于在不同的文件系统之间复制文件相关问题 更多 >
编程相关推荐