【问题标题】:How to handle volatile records efficiently如何有效处理易失记录
【发布时间】:2014-03-30 07:41:16
【问题描述】:

我有这个问题,我想由其他人运行,看看我是否能以更好的方式处理这个问题。

我们有 300 个节点集群,我们每天处理交易信息/记录。我们每天可以获得约 1000 万次交易,每个记录大小约 2K 字节。

我们目前使用 HDFS 进行数据存储,使用 pig 和 hive 进行数据处理。在大多数情况下,我们使用外部 hive 表类型,它按事务创建日期进行分区。

业务是这样的,我们可能会获得几个月或几年前创建的交易的更新。例如,我可能会更新 5 年前创建的交易。我们不能忽略这条记录,只能为了一条记录再次重新处理相应的分区。

因此,我们每天最终会处理 1000 个分区。还有其他使用这些事务表的 ETL 应用程序。

我了解这是对 hive/hdfs 架构的限制。

我相信其他人会遇到这个问题,如果您能分享您可能尝试过的选项以及您是如何解决这个问题的,这将非常有帮助?

【问题讨论】:

  • 这里有人有什么想法吗?

标签: hadoop hive hdfs


【解决方案1】:

您不必覆盖分区:您只需将其插入即可。不要在插入命令中包含“覆盖”。

以下是按日期分区的表的示例,我在其中执行了两次插入(没有超写!) - 您可以看到记录在那里。 。两次!这表明分区已附加,而不是被覆盖/删除。

insert into table insert_test 不要把overwrite放在这里! select ..

hive> select * from insert_test;
OK
name    date
row1    2014-03-05
row2    2014-03-05
row1    2014-03-05
row2    2014-03-05
row3    2014-03-06
row4    2014-03-06
row3    2014-03-06
row4    2014-03-06
row5    2014-03-07
row5    2014-03-07
row6    2014-03-09
row7    2014-03-09
row6    2014-03-09
row7    2014-03-09
row8    2014-03-16
row8    2014-03-16

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多