Hbase如何批量刪除指定數據


有時我們需要批量刪除一些hbase中符合某些條件的數據,本文提供一種簡單的shell命令的方式批量刪除hbase里的數據。思路就是,建立hive與hbase的關聯表,通過hive sql查詢出符合條件的數據rowkey導出到本地文件,然后通過hbase shell批量刪除。示例如下:

1 創建hbase 表

#創建表名為“test:user_blacklist”,列簇名為“user”的hbase表
#hbase 表
create 'test:user_blacklist', 'user'
# phoneix映射表
create view "user_blacklist" ("rowkey" varchar primary key,"user"."dt" varchar,"user"."total_slave_count" varchar,"user"."api_slave_rate" varchar,"user"."active_7day_slave_count" varchar,"user"."active_7day_slave_weixin_rate" varchar,"device"."did" varchar,"device"."device_user_count" varchar,"device"."same_gyroscope_count" varchar);

2 創建hive映射表

CREATE EXTERNAL TABLE test.user_blacklist (
key string, 
dt string,
total_slave_count string,
api_slave_rate string,
active_7day_slave_count string,
active_7day_slave_weixin_rate string,
device_user_count string,
same_gyroscope_count string
) 
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' 
WITH SERDEPROPERTIES
("hbase.columns.mapping" = 
":key,user:dt,user:total_slave_count,user:api_slave_rate,user:active_7day_slave_count,user:active_7day_slave_weixin_rate,device:device_user_count,device:same_gyroscope_count")
TBLPROPERTIES("hbase.table.name" = "test:user_blacklist");

3 通過hive sql導出指定rowkey刪除語句

hive -e "select concat('deleteall \'test:user_blacklist\',\'',key,'\'') from test.user_blacklist where dt>=20190708 and same_gyroscope_count is not null" > del_temp.txt

4 hbase shell批量刪除數據

hbase shell del_temp.txt > del.log


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM