Hadoop 文件系统¶
Odo 使用 WebHDFS 和 pywebhdfs Python 库与 Hadoop 文件系统进行交互。
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(*)