根据以下逻辑加载数据

mlmc2os5  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(353)

一个银行应用程序,每天运行,并生成一个csv文件(其中有帐户详细信息),我们将加载到数据库中的数据。
第二天,将生成更多的每日文件。在此文件中,对于某些帐号,详细信息已更新/修改/删除。在将其插入数据库时,如何仅加载已更改的数据。
流是csv文件->hdfs->hive/spark中的转换(如果适用)->红移

4ioopgfo

4ioopgfo1#

创建hdfs位置 /banking 将第一个csv直接加载到hadoop文件夹中 /banking/dt=20180529 . 跳过数据库,除非你真的在查询它。
在上面生成一个配置单元表,按 dt STRING .
第二天,将第二个csv加载到 /banking/dt=20180530 .
上载文件后,使用配置单元查找当天存在的、昨天也存在的所有行,可以选择从中创建新表

-- CREATE TABLE changed_accts AS
SELECT acct --, other columns 
FROM table 
WHERE dt = '20180530' 
AND acct IN (SELECT acct FROM table WHERE dt = '20180529')

这会过滤掉当天的新账户。我假设被删除的账户根本不会出现。您将需要额外的数据来确定仅更新(如帐户余额更改)

相关问题