pyarrow.fs.HadoopFileSystem#
- class pyarrow.fs.HadoopFileSystem(str host, int port=8020, str user=None, *, int replication=3, int buffer_size=0, default_block_size=None, kerb_ticket=None, extra_conf=None)#
Bases:
FileSystemHDFS 后端文件系统实现
- 参数:
- host
str 要连接的 HDFS 主机。设置为“default”以使用 core-site.xml 中的 fs.defaultFS。
- port
int, default 8020 要连接的 HDFS 端口。设置为 0 以使用默认端口或逻辑(HA)节点。
- user
str, defaultNone 连接 HDFS 时的用户名;None 表示当前登录用户。
- replication
int, default 3 每个块的副本数量。
- buffer_size
int, 默认值 0 如果为 0,则不会发生缓冲,否则为临时读写缓冲区的大小。
- default_block_size
int, defaultNone None 表示 HDFS 的默认配置,通常块大小为 128 MB。
- kerb_ticket
stror path, defaultNone 如果不是 None,则为 Kerberos 票据缓存的路径。
- extra_conf
dict, defaultNone 额外的键值对配置;将覆盖 hdfs-site.xml 中的任何属性。
- host
示例
>>> from pyarrow import fs >>> hdfs = fs.HadoopFileSystem(host, port, user=user, kerb_ticket=ticket_cache_path)
有关方法的使用,请参阅
LocalFileSystem()的示例。- __init__(*args, **kwargs)#
方法
__init__(*args, **kwargs)copy_file(self, src, dest)复制文件。
create_dir(self, path, *, bool recursive=True)创建目录及子目录。
delete_dir(self, path)递归删除目录及其内容。
delete_dir_contents(self, path, *, ...)递归删除目录内容。
delete_file(self, path)删除文件。
equals(self, FileSystem other)from_uri(uri)从 URI 字符串实例化 HadoopFileSystem 对象。
get_file_info(self, paths_or_selector)获取给定文件的信息。
move(self, src, dest)移动/重命名文件或目录。
normalize_path(self, path)规范化文件系统路径。
open_append_stream(self, path[, ...])打开用于追加的输出流。
open_input_file(self, path)打开用于随机访问读取的输入文件。
open_input_stream(self, path[, compression, ...])打开用于顺序读取的输入流。
open_output_stream(self, path[, ...])打开用于顺序写入的输出流。
属性
文件系统的类型名称。
- copy_file(self, src, dest)#
复制文件。
如果目标已存在且是目录,则返回错误。否则,它将被替换。
示例
>>> local.copy_file(path, ... local_path + '/pyarrow-fs-example_copy.dat')
检查文件信息
>>> local.get_file_info(local_path + '/pyarrow-fs-example_copy.dat') <FileInfo for '/.../pyarrow-fs-example_copy.dat': type=FileType.File, size=4> >>> local.get_file_info(path) <FileInfo for '/.../pyarrow-fs-example.dat': type=FileType.File, size=4>
- create_dir(self, path, *, bool recursive=True)#
创建目录及子目录。
如果目录已存在,此函数成功。
- delete_dir_contents(self, path, *, bool accept_root_dir=False, bool missing_dir_ok=False)#
递归删除目录的内容。
类似于 delete_dir,但不会删除目录本身。
- equals(self, FileSystem other)#
- 参数:
- 返回:
- static from_uri(uri)#
从 URI 字符串实例化 HadoopFileSystem 对象。
以下两个调用是等效的
HadoopFileSystem.from_uri('hdfs://:8020/?user=test&replication=1')HadoopFileSystem('localhost', port=8020, user='test', replication=1)
- 参数:
- uri
str 描述 HDFS 连接的字符串 URI。要更改用户、副本数、缓冲区大小或默认块大小,请将值作为查询部分传递。
- uri
- 返回:
- get_file_info(self, paths_or_selector)#
获取给定文件的信息。
任何符号链接都会自动递归解引用。不存在或不可访问的文件将返回一个 FileStat 对象,其 FileType 值为 NotFound。异常表示真正异常的情况(低级 I/O 错误等)。
- 参数:
- paths_or_selector
FileSelector, path-like orlistof path-likes 可以是选择器对象、类路径对象或类路径对象列表。选择器的基本目录不会作为结果的一部分返回,即使它存在。如果它不存在,请使用 allow_not_found。
- paths_or_selector
- 返回:
示例
>>> local <pyarrow._fs.LocalFileSystem object at ...> >>> local.get_file_info(f"/{local_path}/pyarrow-fs-example.dat") <FileInfo for '/.../pyarrow-fs-example.dat': type=FileType.File, size=4>
- move(self, src, dest)#
移动/重命名文件或目录。
如果目标存在: - 如果它是一个非空目录,则返回错误 - 否则,如果它与源具有相同类型,则替换它 - 否则,行为不确定(取决于实现)。
示例
创建一个包含文件的新文件夹
>>> local.create_dir('/tmp/other_dir') >>> local.copy_file(path,'/tmp/move_example.dat')
移动文件
>>> local.move('/tmp/move_example.dat', ... '/tmp/other_dir/move_example_2.dat')
检查文件信息
>>> local.get_file_info('/tmp/other_dir/move_example_2.dat') <FileInfo for '/tmp/other_dir/move_example_2.dat': type=FileType.File, size=4> >>> local.get_file_info('/tmp/move_example.dat') <FileInfo for '/tmp/move_example.dat': type=FileType.NotFound>
删除文件夹:>>> local.delete_dir(‘/tmp/other_dir’)
- open_append_stream(self, path, compression='detect', buffer_size=None, metadata=None)#
打开用于追加的输出流。
如果目标不存在,则创建新的空文件。
注意
某些文件系统实现不支持对现有文件进行高效追加,在这种情况下,此方法将引发 NotImplementedError。考虑写入多个文件(例如使用数据集层)而不是追加。
- 参数:
- path
str 用于写入的源。
- compression
str可选,默认 ‘detect’ 用于即时压缩的压缩算法。如果为 “detect” 且源是文件路径,则会根据文件扩展名选择压缩方式。如果为 None,则不应用压缩。否则,必须提供一个知名的算法名称(例如 “gzip”)。
- buffer_size
intoptional, defaultNone 如果为 None 或 0,则不进行缓冲。否则为临时写入缓冲区的大小。
- metadata
dictoptional, defaultNone 如果不是 None,则为字符串键到字符串值的映射。某些文件系统支持在文件旁存储元数据(例如“Content-Type”)。不支持的元数据键将被忽略。
- path
- 返回:
- stream
NativeFile
- stream
示例
将新数据追加到包含非空文件的 FileSystem 子类
>>> with local.open_append_stream(path) as f: ... f.write(b'+newly added') 12
将内容打印到文件
>>> with local.open_input_file(path) as f: ... print(f.readall()) b'data+newly added'
- open_input_file(self, path)#
打开用于随机访问读取的输入文件。
- 参数:
- path
str 用于读取的源。
- path
- 返回:
- stream
NativeFile
- stream
示例
使用 open_input_file() 打印文件中的数据
>>> with local.open_input_file(path) as f: ... print(f.readall()) b'data'
- open_input_stream(self, path, compression='detect', buffer_size=None)#
打开用于顺序读取的输入流。
- 参数:
- 返回:
- stream
NativeFile
- stream
示例
使用 open_input_stream() 打印文件中的数据
>>> with local.open_input_stream(path) as f: ... print(f.readall()) b'data'
- open_output_stream(self, path, compression='detect', buffer_size=None, metadata=None)#
打开用于顺序写入的输出流。
如果目标已存在,则截断现有数据。
- 参数:
- path
str 用于写入的源。
- compression
str可选,默认 ‘detect’ 用于即时压缩的压缩算法。如果为 “detect” 且源是文件路径,则会根据文件扩展名选择压缩方式。如果为 None,则不应用压缩。否则,必须提供一个知名的算法名称(例如 “gzip”)。
- buffer_size
intoptional, defaultNone 如果为 None 或 0,则不进行缓冲。否则为临时写入缓冲区的大小。
- metadata
dictoptional, defaultNone 如果不是 None,则为字符串键到字符串值的映射。某些文件系统支持在文件旁存储元数据(例如“Content-Type”)。不支持的元数据键将被忽略。
- path
- 返回:
- stream
NativeFile
- stream
示例
>>> local = fs.LocalFileSystem() >>> with local.open_output_stream(path) as stream: ... stream.write(b'data') 4
- type_name#
文件系统的类型名称。