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: FileSystem

HDFS 后端文件系统实现

参数:
hoststr

要连接的 HDFS 主机。设置为“default”以使用 core-site.xml 中的 fs.defaultFS。

portint, default 8020

要连接的 HDFS 端口。设置为 0 以使用默认端口或逻辑(HA)节点。

userstr, default None

连接 HDFS 时的用户名;None 表示当前登录用户。

replicationint, default 3

每个块的副本数量。

buffer_sizeint, 默认值 0

如果为 0,则不会发生缓冲,否则为临时读写缓冲区的大小。

default_block_sizeint, default None

None 表示 HDFS 的默认配置,通常块大小为 128 MB。

kerb_ticketstr or path, default None

如果不是 None,则为 Kerberos 票据缓存的路径。

extra_confdict, default None

额外的键值对配置;将覆盖 hdfs-site.xml 中的任何属性。

示例

>>> 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[, ...])

打开用于顺序写入的输出流。

属性

type_name

文件系统的类型名称。

copy_file(self, src, dest)#

复制文件。

如果目标已存在且是目录,则返回错误。否则,它将被替换。

参数:
srcstr

要复制的文件路径。

deststr

文件复制到的目标路径。

示例

>>> 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)#

创建目录及子目录。

如果目录已存在,此函数成功。

参数:
pathstr

新目录的路径。

recursivebool, default True

同时创建嵌套目录。

delete_dir(self, path)#

递归删除目录及其内容。

参数:
pathstr

要删除的目录路径。

delete_dir_contents(self, path, *, bool accept_root_dir=False, bool missing_dir_ok=False)#

递归删除目录的内容。

类似于 delete_dir,但不会删除目录本身。

参数:
pathstr

要删除的目录路径。

accept_root_dirbool, default False

允许删除根目录的内容(如果 path 为空或“/”)

missing_dir_okbool, default False

如果为 False,则如果路径不存在,将引发错误。

delete_file(self, path)#

删除文件。

参数:
pathstr

要删除的文件路径。

equals(self, FileSystem other)#
参数:
otherpyarrow.fs.FileSystem
返回:
bool
static from_uri(uri)#

从 URI 字符串实例化 HadoopFileSystem 对象。

以下两个调用是等效的

  • HadoopFileSystem.from_uri('hdfs://:8020/?user=test&replication=1')

  • HadoopFileSystem('localhost', port=8020, user='test', replication=1)

参数:
uristr

描述 HDFS 连接的字符串 URI。要更改用户、副本数、缓冲区大小或默认块大小,请将值作为查询部分传递。

返回:
HadoopFileSystem
get_file_info(self, paths_or_selector)#

获取给定文件的信息。

任何符号链接都会自动递归解引用。不存在或不可访问的文件将返回一个 FileStat 对象,其 FileType 值为 NotFound。异常表示真正异常的情况(低级 I/O 错误等)。

参数:
paths_or_selectorFileSelector, path-like or list of path-likes

可以是选择器对象、类路径对象或类路径对象列表。选择器的基本目录不会作为结果的一部分返回,即使它存在。如果它不存在,请使用 allow_not_found

返回:
FileInfo or list of FileInfo

对于单个路径,返回单个 FileInfo 对象,否则返回 FileInfo 对象列表。

示例

>>> 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)#

移动/重命名文件或目录。

如果目标存在: - 如果它是一个非空目录,则返回错误 - 否则,如果它与源具有相同类型,则替换它 - 否则,行为不确定(取决于实现)。

参数:
srcstr

要移动的文件或目录的路径。

deststr

文件或目录移动到的目标路径。

示例

创建一个包含文件的新文件夹

>>> 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’)

normalize_path(self, path)#

规范化文件系统路径。

参数:
pathstr

要规范化的路径

返回:
normalized_pathstr

规范化的路径

open_append_stream(self, path, compression='detect', buffer_size=None, metadata=None)#

打开用于追加的输出流。

如果目标不存在,则创建新的空文件。

注意

某些文件系统实现不支持对现有文件进行高效追加,在这种情况下,此方法将引发 NotImplementedError。考虑写入多个文件(例如使用数据集层)而不是追加。

参数:
pathstr

用于写入的源。

compressionstr 可选,默认 ‘detect’

用于即时压缩的压缩算法。如果为 “detect” 且源是文件路径,则会根据文件扩展名选择压缩方式。如果为 None,则不应用压缩。否则,必须提供一个知名的算法名称(例如 “gzip”)。

buffer_sizeint optional, default None

如果为 None 或 0,则不进行缓冲。否则为临时写入缓冲区的大小。

metadatadict optional, default None

如果不是 None,则为字符串键到字符串值的映射。某些文件系统支持在文件旁存储元数据(例如“Content-Type”)。不支持的元数据键将被忽略。

返回:
streamNativeFile

示例

将新数据追加到包含非空文件的 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)#

打开用于随机访问读取的输入文件。

参数:
pathstr

用于读取的源。

返回:
streamNativeFile

示例

使用 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)#

打开用于顺序读取的输入流。

参数:
pathstr

用于读取的源。

compressionstr 可选,默认 ‘detect’

用于即时解压缩的压缩算法。如果为“detect”且源是文件路径,则将根据文件扩展名选择压缩。如果为None,则不应用压缩。否则,必须提供一个众所周知的算法名称(例如“gzip”)。

buffer_sizeint optional, default None

如果为None或0,则不进行缓冲。否则为临时读取缓冲区的大小。

返回:
streamNativeFile

示例

使用 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)#

打开用于顺序写入的输出流。

如果目标已存在,则截断现有数据。

参数:
pathstr

用于写入的源。

compressionstr 可选,默认 ‘detect’

用于即时压缩的压缩算法。如果为 “detect” 且源是文件路径,则会根据文件扩展名选择压缩方式。如果为 None,则不应用压缩。否则,必须提供一个知名的算法名称(例如 “gzip”)。

buffer_sizeint optional, default None

如果为 None 或 0,则不进行缓冲。否则为临时写入缓冲区的大小。

metadatadict optional, default None

如果不是 None,则为字符串键到字符串值的映射。某些文件系统支持在文件旁存储元数据(例如“Content-Type”)。不支持的元数据键将被忽略。

返回:
streamNativeFile

示例

>>> local = fs.LocalFileSystem()
>>> with local.open_output_stream(path) as stream:
...     stream.write(b'data')
4
type_name#

文件系统的类型名称。