gpt4 book ai didi

java - 如何在HADOOP中处理多个文件夹

转载 作者:行者123 更新时间:2023-12-01 13:37:12 26 4
gpt4 key购买 nike

我遇到以下问题。我有 200k xml 文件。我有 200 个文件夹,每个文件夹有 2000 个 xml 文件。我的 HDFS 中有这个。架构如下

RootFolder 
Folder001
1.xml
2.xml
2000.xml
Folder002
2001.xml

我需要编写一个映射程序来读取文件并执行一些 Xpath 过程。

如果我给出RootFolder输入路径,那么映射器应该读取文件夹并处理xml文件

那就是应该有200个Task。每个文件夹应该由一个映射器读取

如何处理多个文件夹?

最佳答案

据我了解,您有两个问题:

1:需要通过单个映射任务映射子文件夹中的所有文件:

Ans:对于这种情况,您可以使用CombineFileInputFormat。它将针对指定的 PathFilter 对文件进行分组(在您的情况下,过滤器应该接受同一文件夹的文件)并将其分配给单个映射任务。即可以实现每个文件夹的maptask。为了获得更好的控制,请扩展 CombineFileInputFormat 并将其设为您自己的,这就是我在我的例子中所做的。

2:需要通过仅指定根文件夹来包含子文件夹内的文件作为 map task 的输入。

Ans:在新的 API 版本中,FileInputFormat 可以从其子文件夹递归获取文件,直至任何级别。更多信息可以查看jira here

或者,如果您想自己执行此操作,请子类化 FileInputFormat 并重写 listStatus 方法。

关于java - 如何在HADOOP中处理多个文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21178033/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com