首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >反映hdfs中大表的变化

问反映hdfs中大表的变化
EN

Stack Overflow用户
提问于 2017-09-07 12:00:32
回答 1查看 39关注 0票数 0

我在OLTP系统中有一个订单表。每个订单记录都有一个OrderStatus字段。

  • 当最终用户创建订单时,OrderStatus字段设置为"Open“。
  • 当有人取消订单时,OrderStatus字段设置为“已取消”。
  • 当订单处理完成(转换为发票)时,OrderStatus字段设置为"Close“。

在Oltp系统的表中有超过1亿条记录。

我想在hdfs层上设计和填充数据仓库和数据集市。为了设计数据集市,我需要将整个order表导入到hdfs,然后需要不断地反映表上的更改。

首先,我可以在初始加载过程中使用sqoop将整个表导入到hdfs中。我可能要花很长时间,但我会这样做一次。

在更新订单记录或输入新订单记录时,我需要反映hdfs中的更改。对于如此大的事务表,我如何在hdfs中实现这一点?

谢谢

EN

回答 1

Stack Overflow用户

发布于 2017-09-07 14:30:12

其中一种更简单的方法是在OLTP源db中处理数据库触发器,每次发生更新时都使用该触发器将更新事件推送到Hadoop环境中。

另一方面(这取决于您的数据用户的需求),每天晚上重新加载整个数据转储可能就足够了。

此外,如果存在某种上次更改的时间戳,则可能是一种只加载最新数据并进行某种增量检查的可能方法。

这都取决于您的数据结构、需求和手头的资源。

有几种其他方法可以做到这一点,但通常这些方法涉及消息传递、开发和新服务器,我想在您的例子中,这个基础结构或那些重新来源是不可用的。

编辑

由于最近一次更改日期,您可能可以使用如下语句来提取数据

代码语言:javascript
复制
SELECT columns FROM table WHERE lastchangedate < (now - 24 hours)

或者不管你加载的间隔是什么。

然后使用sqoop或ETL工具等处理数据。如果这些记录已经在Hadoop环境中可用,那么您需要UPDATE它。如果记录不可用,请使用适当的机制对其进行INSERT。这有时也被称为UPSERTING。

票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46095804

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档