Hadoop 文件系统

Odo 使用 WebHDFS 和 pywebhdfs Python 库与 Hadoop 文件系统进行交互。

odo and hdfs

URI

HDFS URI 由 hdfs:// 协议、主机名和文件名组成。下面是一些简单和复杂的示例

hdfs://hostname:myfile.csv
hdfs://username@hostname:/path/to/myfile.csv

或者,您可能希望通过关键字参数将认证信息传递给 odo 函数,如下例所示

>>> from odo import odo
>>> odo('localfile.csv', 'hdfs://hostname:myfile.csv',
...     port=14000, user='hdfs')

我们将认证关键字参数传递给 pywebhdfs.webhdfs.PyWebHdfsClient 类,使用以下默认值

user_name='hdfs'
host=None
port='14000'

显式构造 HDFS 对象

大多数用户通常使用 odo URI 字符串进行交互。

或者,您可以通过编程方式构造对象。HDFS 使用 HDFS 类型修饰符

>>> auth = {'user': 'hdfs', 'port': 14000, 'host': 'hostname'}
>>> data = HDFS(CSV)('/user/hdfs/data/accounts.csv', **auth)
>>> data = HDFS(JSONLines)('/user/hdfs/data/accounts.json', **auth)
>>> data = HDFS(Directory(CSV))('/user/hdfs/data/', **auth)

转换

我们可以将任何文本类型(CSV, JSON, JSONLines, TextFile)转换为其在 HDFS 上的等效类型(HDFS(CSV), HDFS(JSON), ...)。odo 网络允许从其他类型进行转换,例如将 pandas 数据帧通过临时本地 CSV 文件路由到 HDFS 上的 CSV 文件。

HDFS(*) <-> *

此外,我们知道如何将 HDFS 文件加载到 Hive 元存储中

HDFS(Directory(CSV)) -> Hive

该网络还允许从其他类型进行转换,例如将 pandas DataFrame 通过临时本地 CSV 文件路由到 HDFS CSV 文件。

Foo <-> Temp(*) <-> HDFS(*)