对已经存在的hbase表修改压缩方式
Posted dtmobile-ksw
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了对已经存在的hbase表修改压缩方式相关的知识,希望对你有一定的参考价值。
业务上可能会遇到这种情况,在最初创建hbase表时候,未指定压缩方式,当数据导入之后,由rowkey带来的数据膨胀导致hdfs上的数据大小远远大于原始数据大小。所以这时候可能就不得不考虑使用压缩,但是如果将表删除,再创建一张指定压缩的表,再重新导入数据未免太浪费时间。当然也完全不用这样,可以直接修改hbase表的压缩方式,然后在执行major_compact即可
disable ‘testcompression‘ //首先将表下线 alter ‘testcompression‘, NAME => ‘f1‘, COMPRESSION => ‘SNAPPY‘ //修改表属性,指定压缩方式为SNAPPY enable ‘testcompression‘ //启用表 desc ‘testcompression‘ //验证是否已启用压缩放肆 major_compact ‘testcompression‘ //执行大合并
需要注意的几点:
1.在执行alter之后,hbase表已经启用压缩,但是对于原来表里已有的数据并不会进行压缩,后续再写入的数据才会执行压缩(可以到hdfs验证)
2.如果想把原来表里已有的数据也使用压缩,那么需要执行一次major_compact。major_compact会重新读写数据,在这个流程中,对原有的数据进行压缩,但是如果表数据很大执行major_compact对hbase集群会有比较大的影响。如果是线上环境,建议在业务不繁忙期间执行。
以上是关于对已经存在的hbase表修改压缩方式的主要内容,如果未能解决你的问题,请参考以下文章
检查表是不是存在并将数据加载到 Hbase 和 HIve 表中
spark读取hbase数据,如果表存在则不做任何操作,如果表不存在则新建表。
mysql中已经存在某个库中有大小写的表,将lower_case_table_names由0改为1对已经存在的表是否有影响?