Dask 数据帧从 http 读取镶木地板格式失败
Dask dataframe read parquet format fails from http
我已经处理这个问题一个星期了。
我使用命令
from dask import dataframe as ddf
ddf.read_parquet("http://IP:port/webhdfs/v1/user/...")
我得到了无效的镶木地板魔法。
但是 ddf.read_parquet 可以与 "webhdfs://"
我希望 ddf.read_parquet 适用于 http,因为我想在没有 hdfs 访问权限的工作人员的 dask-ssh 集群中使用它。
虽然评论已经部分回答了这个问题,但我想我会添加一些信息作为答案
- HTTP(S) 被 dask(实际上
fsspec
)支持作为后端文件系统;但是要在文件中进行分区,您需要获取该文件的大小,并且要解析 glob,您需要能够获取链接列表,这两者都不一定由任何给定服务器提供
- webHDFS(或者实际上是 httpFS)不像 HTTP 下载那样工作,您需要使用特定的 API 打开文件并在集群成员上获取最终的 URL 到该文件;所以这两种方法不能互换
- webHDFS 通常用于 hadoop 集群外部;在集群中,您可能会使用纯 HDFS (
"hdfs://"
)。但是,使用 kerberos 保护的 webHDFS 可能会很棘手,具体取决于安全设置的方式。
我已经处理这个问题一个星期了。 我使用命令
from dask import dataframe as ddf
ddf.read_parquet("http://IP:port/webhdfs/v1/user/...")
我得到了无效的镶木地板魔法。 但是 ddf.read_parquet 可以与 "webhdfs://"
我希望 ddf.read_parquet 适用于 http,因为我想在没有 hdfs 访问权限的工作人员的 dask-ssh 集群中使用它。
虽然评论已经部分回答了这个问题,但我想我会添加一些信息作为答案
- HTTP(S) 被 dask(实际上
fsspec
)支持作为后端文件系统;但是要在文件中进行分区,您需要获取该文件的大小,并且要解析 glob,您需要能够获取链接列表,这两者都不一定由任何给定服务器提供 - webHDFS(或者实际上是 httpFS)不像 HTTP 下载那样工作,您需要使用特定的 API 打开文件并在集群成员上获取最终的 URL 到该文件;所以这两种方法不能互换
- webHDFS 通常用于 hadoop 集群外部;在集群中,您可能会使用纯 HDFS (
"hdfs://"
)。但是,使用 kerberos 保护的 webHDFS 可能会很棘手,具体取决于安全设置的方式。