按照以下逻辑加载数据

时间:2018-05-29 12:33:28

标签: csv apache-spark hadoop hive amazon-redshift

银行应用程序每天运行并生成一个csv文件(具有帐户详细信息),我们将数据加载到数据库中。

第二天,将生成另外一个日常文件。在此文件中,对于某些帐号,详细信息已更新/修改/删除。 将此插入数据库时​​,我们如何只加载已更改的数据。

flow是csv file-> HDFS->如果适用,在蜂巢/火花中转换 - >红移

1 个答案:

答案 0 :(得分:0)

创建HDFS位置/banking

将第一张CSV直接加载到Hadoop中的/banking/dt=20180529文件夹中。除非您实际查询数据库,否则请跳过数据库。

在其上生成一个Hive表,由dt STRING分区。

第二天,将第二张CSV加载到/banking/dt=20180530

上传文件后,使用Hive查找当天存在的所有行,这些行也存在于昨天,可选择从中创建新表

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

这应该过滤掉当天的全新帐户。我假设删除的帐户根本不会显示出来。您需要额外的数据才能确定更新(例如帐户余额更改)