HBase映射/减少依赖问题

时间:2015-03-17 07:11:00

标签: hadoop mapreduce hbase resteasy hadoop2

  1. 概述

  2. 我开发了一个基于resteasy框架的Rest api服务。在服务中,我将数据存储到HBase数据库。然后,执行某些条件触发的map / reduce进程(例如插入一条记录)。

    1. 需要

    2. 在Map类中,我导入了一些第三方库。我不想将这些库打包到war文件中。

      TableMapReduceUtil.initTableMapperJob(HBaseInitializer.TABLE_DATA,   // input HBase table name
                                                scan,                      // Scan instance to control CF and attribute selection
                                                LuceneMapper.class,        // mapper
                                                null,                      // mapper output key
                                                null,                      // mapper output value 
                                                job);
      FileOutputFormat.setOutputPath(job, new Path("hdfs://master:9000/qin/luceneFile"));
      job.submit();
      
      1. 问题

      2. 如果将war文件中的所有库打包并将部署到jetty容器中,那么它运行良好。如果没有包装第三部分库到战争,但将这些库上传到hdfs并将它们添加到类路径,它不起作用。如下所示

        conf.set("fs.defaultFS","hdfs://master:9000"); 
        FileSystem hdfs = FileSystem.get(conf); 
        Path classpathFilesDir = new Path("bjlibs"); 
        FileStatus[] jarFiles = hdfs.listStatus(classpathFilesDir); 
        for (FileStatus fs : jarFiles) { 
              Path disqualified = new Path(fs.getPath().toUri().getPath()); 
              DistributedCache.addFileToClassPath(disqualified, conf);
        }
        hdfs.close();
        

1 个答案:

答案 0 :(得分:0)

尝试使用TableMapReduceUtil.addHBaseDependencyJars()