【问题标题】:comparing data in two tables taking time比较两个表中的数据需要时间
【发布时间】:2014-05-15 11:25:42
【问题描述】:

我需要查询 table1 查找所有订单和创建日期(键是订单号和日期))。

在表2中(键是订单号和日期)检查订单是否存在日期。

为此,我正在扫描表 1 并检查每条记录是否存在于表 2 中。任何更好的方法来做到这一点

【问题讨论】:

  • 你能告诉我你的代码吗?

标签: performance compare hbase difference database-scan


【解决方案1】:

在这两个表的键相同的情况下,使用一个表来存储表 1 和表 2 的数据是有意义的。这样,您可以对数据进行单次扫描,然后立即知道这两个标准的数据是否存在。

更重要的是,如果您想在 MapReduce 中使用这些数据,您只需扫描该单个表即可。如果您只想获取相关行,您可以在 Scan 上定义一个过滤器。例如,如果您根本不会在表 2 中填充行,您只需使用 ColumnPrefixFilter

但是,如果您确实需要将此数据分别保存在 2 个表中,则可以为两个表预先拆分具有相同区域边界的表 - 这在您执行目标查询时会很有帮助 -当表 2 中存在行时,加载表 1 中的所有行。本质上,这将是一个映射端连接。您可以在 MapReduce 作业中定义多个输入,并且由于区域边界相同,因此拆分将使得每个映射器都具有来自两个表的相应行。您可能需要为此实现自己的 MultipleInput 格式(最近在 0.96 中引入的 MultiTableInputFormat 类似乎没有执行映射侧连接)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多