我有一个基本流,我有不同连续日期的多个delta流。我想合并它们以获得最终的流。我如何在Azure Datalake中实现此目的。例如,假设这些是流。我需要合并这些流来获取最终流。合并将使用新值替换原始值。截至目前,增量流的数量超过100个。
基本流:
1022918 300.00 300.00 2 7 5 100
1022918 400.00 400.00 2 170 5 100
1022919 1000.00 1000.00 2 7 6 100
1022920 2000.00 2000.00 2 170 6 100
1022921 3000.00 3000.00 2 123 7 100
1022922 100.00 100.00 2 162 7 100
1022922 200.00 200.00 2 123 9 100
1022922 300.00 300.00 2 162 9 100
Delta Stream 1:
1022918 400.00 300.00 2 7 5 100
1022919 2000.00 1000.00 2 7 6 100
1022920 3000.00 2000.00 2 170 6 100
1022922 400.00 300.00 2 162 9 100
Delta Stream 2:
1022919 2500.00 1000.00 2 7 6 100
1022920 3500.00 2000.00 2 170 6 100
预期输出
1022918 400.00 300.00 2 7 5 100
1022918 400.00 400.00 2 170 5 100
1022919 2500.00 1000.00 2 7 6 100
1022920 3500.00 2000.00 2 170 6 100
1022921 3000.00 3000.00 2 123 7 100
1022922 100.00 100.00 2 162 7 100
1022922 200.00 200.00 2 123 9 100
1022922 400.00 300.00 2 162 9 100
答案 0 :(得分:1)
Azure Data Lake Store是一个仅附加文件系统。这意味着记录只能添加到文件的末尾。这与许多其他仅附加系统不同。各种分析应用程序(如Azure Data Lake Analytics和Hive)可用于逻辑合并这些基本流和增量流
实现这一目标通常有4个步骤。
加载基础数据 - 这很简单。加载基础数据时,需要添加标识符。例如基准日期或基础版本。对于此讨论,我们假设您使用的是版本号。假设基础数据是版本0
在自己的表/文件中加载增量数据 - 加载它们时,还需要有一个标识符,可用于与基础数据进行比较以确定最新记录。说我们也有版本号。因此,新记录将是更大的版本号1,2,3等等。
构建合并视图 - 这是一个查询,它将基础数据与版本最大的ID上的增量数据相连接。现在,当您获得此视图时,这是所有最新记录。
使用合并视图中的记录创建新的基础数据。
这篇文章解释了如何使用Hive来实现这一目标。这个使用日期时间来识别最新记录。
https://hortonworks.com/blog/four-step-strategy-incremental-updates-hive/
答案 1 :(得分:0)