【问题标题】:Loading data as per the below logic按照以下逻辑加载数据
【发布时间】:2018-11-08 02:52:06
【问题描述】:

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

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

流程是 csv 文件->HDFS->hive/spark 中的转换(如果适用)-> redshift

【问题讨论】:

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


    【解决方案1】:

    创建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') 
    

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

    【讨论】:

    • 感谢伙伴您的宝贵时间和宝贵的意见 :) 我肯定会努力解决这个问题。我们会看到:)
    猜你喜欢
    • 2020-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-19
    • 1970-01-01
    • 1970-01-01
    • 2022-01-22
    • 1970-01-01
    相关资源
    最近更新 更多