我有大量与交易相关的数据集。我需要从事务日期(每天增加)或状态(数量有限)中选择分区列。哪个是理想的选择,为什么?
问问题
1513 次
2 回答
0
理想的选择是将状态作为分区列,因为分区会根据不同的值创建不同的文件夹。因此文件夹数 = 状态数,因此存储到 Namenode 的元数据信息会更少。
但是如果考虑交易日期,那么每天都会有一个新文件夹,这会在某个时间点降低 Namenode 的性能。
于 2018-11-11T14:47:14.607 回答
0
选择 transaction_date 作为分区列的缺点: (1) 目录太小,可能会导致 HDFS 开销。
使用状态的优点: (1) 目录的数量是固定的。
这完全取决于查询将如何形成以供执行。如果您的查询包含 transaction_date 的过滤子句并且没有分区,那么整体执行会很慢。
此外,创建分区并不能保证更快的执行。与数据量大的分区相比,数据量少的分区返回搜索结果的速度更快。
于 2018-05-18T13:24:23.097 回答