比较两个表中的数据需要时间

nzrxty8p  于 2021-06-09  发布在  Hbase
关注(0)|答案(1)|浏览(393)

我需要查询表1找到所有订单和创建日期(关键是订单号和日期)。
在表2中(键是订单号和日期)检查订单是否存在。
为此,我正在扫描表1,并为每个记录检查它是否存在于表2中。有更好的办法吗

g52tjvyc

g52tjvyc1#

在两个表的键都相同的情况下,使用一个表来存储表1和表2的数据是有意义的。这样,您就可以对您的数据进行一次扫描,并立即知道这两个条件的数据是否存在。
更重要的是,如果您想在mapreduce中使用这些数据,只需扫描单个表即可。如果只想获取相关行,可以在扫描时定义一个过滤器。例如,在表2中根本不填充行的情况下,只需使用columnprefixfilter
但是,如果确实需要在两个表中分别保留此数据,则可以为两个表预拆分具有相同区域边界的表-这在执行目标查询时很有用-当表2中存在行时加载表1中的所有行。本质上,这将是一个Map边连接。您可以在mapreduce作业中定义多个输入,并且由于区域边界是相同的,因此拆分将使每个Map器都具有来自两个表的相应行。为此,您可能需要实现自己的multipleinput格式(最近在0.96中引入的multipleinputformat类似乎没有实现Map端连接)

相关问题