如果第三方API只使用本地文件系统路径,如何在hadoop中使用第三方API从hdfs读取文件?

如果第三方API只使用本地文件系统路径,如何在hadoop中使用第三方API从hdfs读取文件?,hadoop,hdfs,Hadoop,Hdfs,我有很大的mbox文件,我正在使用第三方API,如mstor,使用hadoop解析mbox文件中的消息。我已经在hdfs中上传了这些文件。但问题是该API仅使用本地文件系统路径,类似于下面所示 MessageStoreApi store = new MessageStoreApi(“file location in locl file system”); 我在这个API中找不到可以从流初始化的构造函数。所以我无法读取hdfs流并初始化它 现在我的问题是,我应该将我的文件从hdfs复制到本地文件

我有很大的mbox文件,我正在使用第三方API,如mstor,使用hadoop解析mbox文件中的消息。我已经在hdfs中上传了这些文件。但问题是该API仅使用本地文件系统路径,类似于下面所示

MessageStoreApi store = new MessageStoreApi(“file location in locl file system”);
我在这个API中找不到可以从流初始化的构造函数。所以我无法读取hdfs流并初始化它

现在我的问题是,我应该将我的文件从hdfs复制到本地文件系统并从本地临时文件夹初始化它吗?这就是我现在一直在做的:

当前我的映射函数接收mbox文件的路径

Map(key=path_of_mbox_file in_hdfs, value=null){

String local_temp_file = CopyToLocalFile(path in hdfs);
MessageStoreApi store = new MessageStoreApi(“local_temp_file”);
//process file

}
还是有其他解决办法?我期待一些解决方案,比如,如果我增加块大小,使单个文件适合一个块,如果我能在映射函数中获得这些块的位置,因为大多数映射函数将在存储这些块的同一节点上执行,那么我可能不必总是下载到本地文件系统?但我不确定这是否会一直奏效:)


欢迎提出建议、意见

对于类似本地文件系统路径的访问,HDFS提供了两个选项:HDFS NFS(通过NFSv3挂载)和保险丝挂载HDFS

前者记录在(CDH用户可以)

后者记录在CDH上(CDH用户可以找到相关文档)

目前,NFS功能在上游的维护比FUSE选项更多