繁体   English   中英

用一百万次扫描运行hbase mapreduce作业有意义吗?

[英]Does it make sense to run an hbase mapreduce job with a million Scans?

我在hbase中有一个数据集,该数据集足够大,要花几个小时才能对整个数据集运行mapreduce作业。 我希望能够使用预先计算的索引来分解数据:每天一次映射整个数据集并将其分解为多个索引:

  • 所有用户样本的1%
  • 参与特定A / B实验的所有用户
  • 每晚预发布频道上的所有用户。
  • 所有具有特定附加组件的用户(或本周我们感兴趣的任何条件)

我的想法是只存储相关记录的行ID列表,然后以后人们只能在这些行上执行很少的mapreduce工作。 但是1%的样本仍然是100万行数据,我不确定如何在一百万行的列表上构造mapreduce作业。

如果要由一百万个不同的Scan对象组成查询,那么使用initTableMapperJob(List scans)创建表映射器作业是否有意义? 还有其他方法可以使我仍然可以将计算和I / O有效地分配给hbase集群吗?

不要进行一百万次扫描。 如果您有一百万个不连续的ID,则可以使用自定义输入格式在ID列表上运行map / reduce作业,以便将列表划分为合理数量的分区(我猜这是您的数量的4倍) m / r插槽,但该数字不基于任何值)。 这将为您提供一百万次获取操作,这可能比一百万次扫描要好。

如果您有幸拥有更合理数量的连续范围,那么扫描将比直接获取更好

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM