我有大量与交易相关的数据集。我需要从事务日期(每天增加)或状态(限制数量)中选择分区列。哪一个是理想的选择?为什么?
shstlldc1#
选择事务日期作为分区列的缺点:(1)目录太小可能导致hdfs的开销。使用state的优点:(1)目录的数量是固定的。这完全取决于查询将如何形成以供执行。如果您的查询包含事务\日期的筛选子句,并且没有分区,那么总体执行将很慢。而且,创建分区并不能保证更快的执行。对于数据量较小的分区,返回搜索结果的速度会比数据量较大的分区更快。
mlmc2os52#
理想的选择是将状态作为分区列,因为分区基于不同的值创建不同的文件夹。因此,文件夹数=状态数,因此存储到namenode的元数据信息将更少。但是如果考虑事务日期,那么每天都会有一个新文件夹,这会在某个时间点降低namenode的性能。
2条答案
按热度按时间shstlldc1#
选择事务日期作为分区列的缺点:(1)目录太小可能导致hdfs的开销。
使用state的优点:(1)目录的数量是固定的。
这完全取决于查询将如何形成以供执行。如果您的查询包含事务\日期的筛选子句,并且没有分区,那么总体执行将很慢。
而且,创建分区并不能保证更快的执行。对于数据量较小的分区,返回搜索结果的速度会比数据量较大的分区更快。
mlmc2os52#
理想的选择是将状态作为分区列,因为分区基于不同的值创建不同的文件夹。因此,文件夹数=状态数,因此存储到namenode的元数据信息将更少。
但是如果考虑事务日期,那么每天都会有一个新文件夹,这会在某个时间点降低namenode的性能。