首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在工作目录中解压Hadoop分布式缓存归档

在工作目录中解压Hadoop分布式缓存归档
EN

Stack Overflow用户
提问于 2012-08-10 18:33:13
回答 1查看 1.5K关注 0票数 1

我通过–Dmapred.cache.archives=hdfs://host:port/path/archive.zip#foldername –D.mapred.create.symlink=yes向分布式缓存发送了一个归档文件,它会在工作目录中创建一个新文件夹并解压缩那里的文件。问题是我需要工作目录中的这些文件,并且我已经尝试使用../作为文件夹名,并发送了一个空文件名。除了在我的Java代码中显式地移动文件之外,对于如何解决这个问题有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-08-11 10:38:28

文件在工作目录中的具体需求是什么(这样我就可以理解,并提出一些替代方案)。

无论如何,看起来分布式缓存中的归档总是会被解压到一个目录中,所以我不认为您可以使用归档来解决这个问题--但是,根据您希望放置在工作目录中的文件的数量,您可以使用DistributedCache中的文件。

例如,使用GenericOptionsParser参数,您可以指定要包含的文件和文件夹,这些文件和文件夹随后可在工作目录中使用:

代码语言:javascript
复制
public static class DistCacheMapper extends
        Mapper<LongWritable, Text, NullWritable, NullWritable> {
    @Override
    public void run(Context context) throws IOException,
            InterruptedException {
        Configuration conf = context.getConfiguration();

        System.err.println("Local Files:");
        listFiles(new File("."), "");
    }

    private void listFiles(File dir, String ident) {
        for (File f : dir.listFiles()) {
            System.out.println(ident + (f.isDirectory() ? "d" : "-") + "\t"
                    + f.getName());
            if (f.isDirectory()) {
                listFiles(f, ident + "  ");
            }
        }
    }
}

例如,对于hadoop jar myjar.jar -files pom.xml,.project,.classpath,src dummy.txt,在stderr上给出了以下内容(您可以看到它已经占用了src文件夹):

代码语言:javascript
复制
-   .classpath
-   .project
d   tmp
-   pom.xml
d   src
  d test
    d   resources
    d   java
  d main
    d   resources
    d   java
      d csw
        d   sandbox
          - DistCacheJob.java
          - .DistCacheJob.java.crc
-   job.jar
-   .job.jar.crc

因此,最重要的是,您必须在Dist缓存文件中列出工作目录中所需的所有文件,子目录可以作为存档文件列出,也可以作为使用文件列出。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11899873

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档