Hadoop,HAR文件和通配不起作用

时间:2014-02-13 16:54:10

标签: hadoop har

我们有一个~8Milllion文件的数据集,每个文件大约0.5到2兆。在构建一个har文件后,我们无法对它们进行分析。

这些文件已经存在于预先存在的目录结构中:

user-|
     |-hadoop-|
              |-all_the_files--|-PARENT_DIR_1-|-CHILD_DIR_1-|-FILES
                               |              |-CHILD_DIR_2-|-FILES
                               |
                               |-PARENT_DIR_2-|-CHILD_DIR_1-|-FILES

将这些转移到hdfs并建立一个har存档是微不足道的;我使用以下命令制作存档

bin/hadoop archive -archiveName test.har -p /user/hadoop/ all_the_files/*/*/ /user/hadoop/

列出har的内容(bin / hadoop fs -lsr har:///user/hadoop/epc_test.har),一切看起来都像我期望的那样。

当我们使用此命令运行hadoop作业时,尝试使用通配符存档:

bin/hadoop jar My.jar har:///user/hadoop/test.har/all_the_files/*/*/ output

失败并出现以下异常

Exception in thread "main" java.lang.IllegalArgumentException: Can not create a Path from an empty string

使用非归档文件运行作业很好,例如:

bin/hadoop jar My.jar all_the_files/*/*/ output

然而,这仅适用于我们适度的测试文件集。任何大量文件都会使namenode快速耗尽内存。

你可以在harv档案中使用文件globs吗?是否有不同的方法来构建存档以仅包含我错过的文件?

0 个答案:

没有答案