【问题标题】:How to insert backdated data in Hive Table?如何在 Hive 表中插入回溯数据?
【发布时间】:2018-11-18 09:18:12
【问题描述】:

我是这项技术的新手。我们收到可能包含回溯记录的文件。我们必须从中将数据加载到仅插入的配置单元表中(在 trans_Date 上分区)。我需要知道在表中插入记录的机制应该是什么,其中 trans_date 是回溯的。 Trans_date(column) 为交易日期,Record_date(column) 为记录插入表的日期。

【问题讨论】:

  • trans_date 是分区键吗?有什么问题。 record_date 与 trans_date 的关系如何?
  • 您好,我已经编辑了问题。另外,我是这项技术的新手。我们收到可能包含回溯记录的文件。我们必须从中将数据加载到表中(在 trans_Date 上分区)。我需要知道在表中插入记录的机制应该是什么,其中 trans_date 是回溯的。 Trans_date 为交易日期,Record_date 为记录插入表的日期。
  • 你试过了吗?发生什么了?你是如何加载文件的? (您是这项技术的新手这一事实并不重要……我只是不确定您的要求是否清楚。)

标签: sql hive hiveql insert-update


【解决方案1】:

您可以通过多种方式并实际使用不同的工具来做到这一点。

在新文件目录之上创建增量表,或使用LOAD命令将文件放入增量表,或使用hadoop fs -cp命令。

好吧,您现在有一个包含增量数据的表。

下一步是将主表加载到适当的分区中 如果你只插入,不更新,使用

INSERT INTO TABLE PARTITION(trans_date)
select col1, col2, trans_date from incr_table; --filter if necessary 

删除 incr_table 或仅删除表增量位置中的数据并重新使用该表。或按记录日期(或文件日期)对 incr_table 进行分区(如果适用),永远不要删除、加载和选择新分区。

如果您需要使用增量数据更新旧记录,请参阅此答案:https://stackoverflow.com/a/37744071/2700344

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-06-13
    • 2017-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-09
    • 2018-10-03
    • 1970-01-01
    相关资源
    最近更新 更多