hbaseMap/减少依赖性问题

1zmg4dgp  于 2021-05-30  发布在  Hadoop
关注(0)|答案(1)|浏览(313)

概述
我开发了一个基于resteasy框架的restapi服务。在服务中,我将数据存储到hbase数据库。然后,执行由某些条件触发的map/reduce过程(例如插入一条记录)。
要求
在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();

问题
如果打包war文件中的所有库,这些库将被部署到jetty容器中,那么它工作得很好。如果不将第三部分库打包到war中,而是将这些库上传到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();
z8dt9xmd

z8dt9xmd1#

试试tablemapreduceutil.addhbasedependencyjars()

相关问题