Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Hbase扫描与Mapreduce的动态计算_Java_Performance_Hadoop_Mapreduce_Hbase - Fatal编程技术网

Java Hbase扫描与Mapreduce的动态计算

Java Hbase扫描与Mapreduce的动态计算,java,performance,hadoop,mapreduce,hbase,Java,Performance,Hadoop,Mapreduce,Hbase,我需要计算HBase表上的聚合 假设我有这个hbase表:“元数据”列系列:M列:n 这里元数据对象有一个字符串列表 类元数据 { 列出标签 } 我需要计算我正在考虑使用mapreduce或直接扫描hbase的标记数 结果必须动态返回。那么在这个场景中我可以使用哪一个呢?扫描hbase并计算聚合或mapreduce Mapreduce最终将扫描hbase并计算计数 使用这两种方法的优缺点是什么?我怀疑您不知道HBase的优缺点是什么,它不适合计算大型数据集的实时聚合 让我们先说MapReduce

我需要计算HBase表上的聚合

假设我有这个hbase表:“元数据”列系列:M列:n

这里元数据对象有一个字符串列表

类元数据 { 列出标签

}

我需要计算我正在考虑使用mapreduce或直接扫描hbase的标记数

结果必须动态返回。那么在这个场景中我可以使用哪一个呢?扫描hbase并计算聚合或mapreduce

Mapreduce最终将扫描hbase并计算计数


使用这两种方法的优缺点是什么?

我怀疑您不知道HBase的优缺点是什么,它不适合计算大型数据集的实时聚合

让我们先说MapReduce本身就是一个计划作业,您将无法动态返回响应,任务跟踪器初始化作业的时间不少于15秒

最后,MapReduce作业将做完全相同的事情:HBase扫描,立即执行扫描与MapReduce之间的区别在于并行化和数据局部性,当您有数百万/数十亿行时,这一点非常好。如果您的查询只需要读取几千个连续的行来聚合它们,当然,您可以只进行一次扫描,它可能有一个可接受的响应时间,但是对于较大的数据集,在查询时不可能做到这一点

HBase最适合处理成吨的原子读写,这样,您就可以实时维护这些聚合,不管您需要多少预聚合计数器,也不管您将接收多少请求:通过正确的行键设计和拆分策略,您可以扩展以满足需求


可以将其视为字数计数,您可以将所有字数存储在一个列表中,并在请求时在查询时对其进行计数,或者您可以在插入时处理该列表,并将每个字数在文档中的使用次数存储为全局计数器,并存储在每日、每月、每年、每个国家、每个作者的表格(甚至家庭)中.

定义“动态”。在调用API时进行计算,而不是安排作业。