如何有效地处理易失性记录

时间:2014-03-30 07:41:17

标签: hadoop hive hdfs

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

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

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

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

由于这个原因,我们每天最终会处理1000个分区。还有一些ETL应用程序使用这些事务表。

据我所知,这是对hive / hdfs架构的限制。

我确信其他人会遇到这个问题,如果你可以分享你可能尝试的选项以及你是怎么做到的,那将会非常有用吗?

1 个答案:

答案 0 :(得分:0)

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

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

插入表insert_test 不要在此处覆盖!选择..

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