推土机Mapper性能

时间:2013-09-23 16:21:55

标签: java hadoop thrift dozer

我一直在我的hadoop工作中做一些工作,并且能够快速获得对象层次结构之间的Dozer映射。我有一些复杂的对象,我需要转换为Thrift类型。当我启用此映射时,它会为我的5分钟处理运行(使其为10分钟)加上或减去一些变化添加近5分钟的执行时间。我打印出Dozer统计数据,它清楚地显示它花了5分钟做映射。有什么方法可以加快速度吗?定义映射与让它通过反射自动映射是否有任何优势?

这就是我打印统计数据的方式:

GlobalStatistics stats = GlobalStatistics.getInstance();
for (Statistic stat : stats.getStatsMgr().getStatistics()) {
    for (StatisticEntry entry : stat.getEntries()) {
        System.out.println(entry.getKey() + ": " + entry.getValue());
    }
}

这是输出:

SUPER_TYPE_CHECK: 970293
SUPER TYPE CHECK: 6
MAPPER_INSTANCES_COUNT: 1
MAPPING_SUCCESS_COUNT: 10093
FIELD_MAPPING_SUCCESS_COUNT: 25883488
MAPPING_TIME: 478486

我很好奇的是,生成的Thrift类具有公共字段以及getter / setter方法。我需要返回并使用私有字段以Bean样式重新注入它们。 Dozer会在这些公共领域做额外的工作吗?我怎样才能加速这种映射?我知道开发时间与执行时间之间存在权衡,我总是可以实现自己的转换,但我对使用Dozer的性能损失有多大感到惊讶。我做错了吗?

另外,为什么我看不到任何有关推土机缓存命中率的统计数据?此页面表明应该有更多可用的统计信息:http://dozer.sourceforge.net/documentation/configuration/statistics.html

0 个答案:

没有答案