#!/bin/bash
#两种时间输入,一种是输入起始日期,另一种是直接输入hbase里面数据的起始时间戳
if [ $# != 5 ];then
echo 'usage:sh byTimestampRange.sh table "d:pri_key" d "2018-01-22 17:11:52" "2018-01-22 17:14:53"'
echo 'usage:sh byTimestampRange.sh table "d:pri_key" t "1532599799357" "1532599799357"'
exit
fi
table=$1
column=$2
ttype=$3
stime=$4
etime=$5
#get startTimestamp,endTimestamp, hbase里面单元格の时间戳为毫秒
# 命令data -d "@去除后3位的时间戳" 可以查看hbase里面单元格的时间对应的日期形式
#输入为起始日期,先转化为字符串形式的时间戳,到秒,然后开始时间戳补上000,结束时间戳补上999,因为hbase里面时间戳是到毫秒级的
if [ $ttype == "d" ];then
startSec=`date -d "$stime" +%s`
endSec=`date -d "$etime" +%s`
sTimestamp=$startSec"000"
eTimestamp=$endSec"999"
#sTimestamp=$((startSec*1000+`date "+%N"`/1000000))
#eTimestamp=$((endSec*1000+`date "+%N"`/1000000))
#直接使用输入的时间戳
elif [ $ttype == "t" ];then
sTimestamp=$stime
eTimestamp=$etime
else
echo "timetype:d or t"
exit
fi
#echo $table
#echo $column
#echo $ttype
#echo $sTimestamp
#echo $eTimestamp
currentTime=`date +%s`
echo "scan,get rowkeys,scan: '$table',{ COLUMNS => '$column',TIMERANGE => [$sTimestamp,$eTimestamp]}"
#notice:[sTimestamp,eTimestamp)!!!
echo "scan '$table',{ COLUMNS => '$column',TIMERANGE => [$sTimestamp,$eTimestamp]}" | hbase shell > ./scanresult-$currentTime.txt
#删除scan结果文件前面没用的6行
sed -i '1,6d' scanresult-$currentTime.txt
#删除最后一个空行
sed -i '$d' scanresult-$currentTime.txt
#删除scan统计条数的行,现在位置在最后
sed -i '$d' scanresult-$currentTime.txt
#判断下是否查询结果,没有则直接退出
tmpCount=$(wc -l ./scanresult-$currentTime.txt | awk '{print $1}')
if [ "$tmpCount" -eq 0 ];then
echo "0 rows deleted"
rm -rf ./scanresult-$currentTime.txt
exit
fi
#生成hbase 删除语句
cat scanresult-$currentTime.txt|awk '{print $1}' | while read rowkey
do
echo -e "deleteall '${table}','${rowkey}'" >> ./delete-$currentTime.txt
done
totalCount=$(wc -l ./delete-$currentTime.txt | awk '{print $1}')
echo "exit" >> ./delete-$currentTime.txt
#执行hbase删除
hbase shell ./delete-$currentTime.txt
echo "$totalCount records deleted"
rm -rf ./scanresult-$currentTime.txt
rm -rf ./delete-$currentTime.txt
HBase按照TimeStamp删除数据
原创
©著作权归作者所有:来自51CTO博客作者渐远的列车的原创作品,请联系作者获取转载授权,否则将追究法律责任
上一篇:Kafka客户端编程入门介绍
下一篇:HBase按照行键范围删除数据
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
SQL数据库入门02:创建、修改处理、复制与删除数据库表
本文介绍基于Microsoft SQL Server软件,实现数据库表的创建、修改、复制、删除与表数据处理的方法~
数据库 SQL 数据库表 SQL Server MySQL -
mpirun如何指定GPU
1.mpd & 启动本机的mpi守护进程2. mpdboot: 启动集群mpd守护进程,在运行MPI程序前必须开启每个节点上的mpd守护进程。 常用的参数: -n nodenum,需要启动的节点数量 &nbs
mpirun如何指定GPU fortran 浏览器 sun compilation