我正在建设的数据湖,以集成多个数据源的高级分析。
在开始时,我选择HDFS作为数据湖存储。但是我有一个更新和删除数据源的要求,我必须与数据湖同步。
要理解Data的不可变性质,我将考虑数据源中的LastModifiedDate,以检测该记录是否已更新,并将该记录插入数据湖中具有当前日期。这样做的目的是用最大值(日期)选择记录。
但是,我无法理解
你能建议我在这种情况下的良好做法吗?
发布于 2018-05-10 07:35:28
1.从数据源中检测已删除的记录
从数据源中检测已删除的记录,需要数据源支持这一点。最好的做法是只在逻辑上进行删除,例如使用更改标志。对于某些数据库,也可以跟踪已删除的行(例如,请参阅Server)。另外,像Informatica这样的一些ETL解决方案提供了CDC (更改数据捕获)功能。
2.大数据解决方案中的问题更改数据处理
有不同的方法。当然,您可以使用键值存储,在整个解决方案中添加某种复杂性。首先,您必须澄清,如果跟踪更改和删除也是有兴趣的。您可以考虑将所有数据(新的/更改的/删除的)加载到每天的分区中,并最终构建一个实际的映像(数据源中的数据)。还可以考虑像Databricks Delta这样的解决方案来解决这个问题,而不需要额外的存储。例如,您可以按照以下方式对带有增量的拼花文件进行插入:
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等的键值存储将有所帮助。
发布于 2018-04-11 13:07:41
通常,在Hadoop中创建datalake时,这总是一个约束,不能只更新或删除其中的记录。有一种方法你可以尝试
https://stackoverflow.com/questions/49694901
复制相似问题