对已经存在的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对已经存在的表是否有影响?

hbase shell表结构管理

Java 操作HBase

python修改已经存在的表内容,格式