首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将数据池与已删除的记录同步

将数据池与已删除的记录同步
EN

Stack Overflow用户
提问于 2018-04-06 14:17:50
回答 2查看 1.2K关注 0票数 1

我正在建设的数据湖,以集成多个数据源的高级分析。

在开始时,我选择HDFS作为数据湖存储。但是我有一个更新和删除数据源的要求,我必须与数据湖同步。

要理解Data的不可变性质,我将考虑数据源中的LastModifiedDate,以检测该记录是否已更新,并将该记录插入数据湖中具有当前日期。这样做的目的是用最大值(日期)选择记录。

但是,我无法理解

  1. 我将检测删除的记录从来源和我将做什么与数据湖?
  2. 我应该使用诸如Cassandra之类的其他数据存储并执行delete命令吗?恐怕它会失去不可改变的财产。

你能建议我在这种情况下的良好做法吗?

EN

回答 2

Stack Overflow用户

发布于 2018-05-10 07:35:28

1.从数据源中检测已删除的记录

从数据源中检测已删除的记录,需要数据源支持这一点。最好的做法是只在逻辑上进行删除,例如使用更改标志。对于某些数据库,也可以跟踪已删除的行(例如,请参阅Server)。另外,像Informatica这样的一些ETL解决方案提供了CDC (更改数据捕获)功能。

2.大数据解决方案中的问题更改数据处理

有不同的方法。当然,您可以使用键值存储,在整个解决方案中添加某种复杂性。首先,您必须澄清,如果跟踪更改和删除也是有兴趣的。您可以考虑将所有数据(新的/更改的/删除的)加载到每天的分区中,并最终构建一个实际的映像(数据源中的数据)。还可以考虑像Databricks Delta这样的解决方案来解决这个问题,而不需要额外的存储。例如,您可以按照以下方式对带有增量的拼花文件进行插入:

代码语言:javascript
运行
复制
    MERGE INTO events
      USING updates
      ON events.eventId = updates.eventId
    WHEN MATCHED THEN
       UPDATE SET
       events.data = updates.data
    WHEN NOT MATCHED
       THEN INSERT (date, eventId, data) VALUES (date, eventId, data)

如果您的解决方案还需要通过密钥进行低延迟访问(例如,支持API),那么像HBase、Cassandra等的键值存储将有所帮助。

票数 1
EN

Stack Overflow用户

发布于 2018-04-11 13:07:41

通常,在Hadoop中创建datalake时,这总是一个约束,不能只更新或删除其中的记录。有一种方法你可以尝试

  1. 添加lastModifiedDate时,还可以添加多一个列命名状态。如果删除记录,则将状态标记为“已删除”。所以下一次,当您想要查询最新的活动记录时,您将能够过滤掉它。
  2. 如果每天执行ACID操作,也可以使用cassandra或Hbase (任何nosql数据库)。如果不是,第一种方法将是您在Hadoop中创建datalake的理想选择。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49694901

复制
相关文章

相似问题

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