我在hive0.14中创建了具有acid属性的表。
我的示例创建表脚本:
CREATE TABLE sample_test (id STRING, link STRING, came_from STRING)
PARTITIONED BY (datestamp STRING) CLUSTERED BY (id) INTO 56 BUCKETS STORED AS ORC;
每当我执行update/insert/delete时,它都会在hdfs中的每个分区目录下创建一个delta文件,如下所示。当前在仓库目录中,我们有10个以上的增量文件,但是根据hive-site.xml设置,每创建10个增量文件,应该进行较小的压缩,每个分区目录下的增量文件不应该超过10个。但目前我可以在每个分区目录下看到10多个增量文件(实际上是15个)。
/usr/hive/warehouse/db_path/sample_test/datestamp=2015-06-13/delta_000001_000001/bucket_0000_0000
/usr/hive/warehouse/db_path/sample_test/datestamp=2015-06-13/delta_000001_000001/bucket_0001_0001
/usr/hive/warehouse/db_path/sample_test/datestamp=2015-06-13/delta_000001_000001/bucket_0055_0055
/usr/hive/warehouse/db_path/sample_test/datestamp=2015-06-13/delta_000015_000015/bucket_0000_0000
因此,当我对这个表sample\u测试执行select count(*)时,它会运行超过250秒来给出结果。我在这个表中只有150条记录(样本测试)。
我尝试使用下面的命令进行手动压缩,但仍然没有改进,增量文件计数保持不变。
ALTER TABLE tablename [PARTITION (partition_key='partition_value' [,...])] COMPACT 'compaction_type'
但当我从现有的表创建表时,如下所示。只有基本文件被复制到ne表位置(没有增量文件),而我在新表sample\u test2上的select count(*)非常快(不到一秒钟就给出了150的计数)。
Create table sample_test2 select * from sample_test;
my hive-site.xml值如下所示:
hive.compactor.worker.timeout 86400
hive.compactor.check.interval 300
hive.compactor.delta.num.threshold 10L
hive.compactor.delta.pct.threshold 0.1f
hive.compactor.abortedtxn.threshold 1
请帮助我解决这个问题。
暂无答案!
目前还没有任何答案,快来回答吧!