hadoop、har文件和globbing不起作用

ymdaylpp  于 2021-06-03  发布在  Hadoop
关注(0)|答案(0)|浏览(210)

我们有一个大约800万个文件的数据集,每个文件大约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\u 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耗尽内存。
你能把文件globs和har档案一起使用吗?有没有一种不同的方式来建立档案,只包括我错过的文件?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题