#!/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

参考:https://blog.csdn.net/nyistzp/article/details/76922512

HBase按照TimeStamp删除数据的更多相关文章

  1. Hbase之批量删除数据

    import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.HBaseConfiguration; impo ...

  2. Hbase如何批量删除指定数据

    有时我们需要批量删除一些hbase中符合某些条件的数据,本文提供一种简单的shell命令的方式批量删除hbase里的数据.思路就是,建立hive与hbase的关联表,通过hive sql查询出符合条件 ...

  3. hadoop生态系统学习之路(八)hbase与hive的数据同步以及hive与impala的数据同步

    在之前的博文中提到,hive的表数据是能够同步到impala中去的. 一般impala是提供实时查询操作的,像比較耗时的入库操作我们能够使用hive.然后再将数据同步到impala中.另外,我们也能够 ...

  4. Hbase之删除数据

    import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.HBaseConfiguration; impo ...

  5. HBase删除数据

    hbase官方文档中描述了,hbase删除数据可以总结为下面三种(Java API有很多接口,可以总结下面的几种): 删除一个列的指定版本 删除一个列的所用版本 删除指定列族的所有列 hbase删除数 ...

  6. 【大数据】Hbase如何批量删除指定数据

    一.起因: Hbase是一个列式存储,nosql类型的数据库,类似mongodb. 目前似乎没有提供批量删除的方法,只有一个单行删除的命令:deleteall 'tablename', rowkey ...

  7. HBase 架构与工作原理3 - HBase 读写与删除原理

    本文系转载,如有侵权,请联系我:likui0913@gmail.com 一.前言 在 HBase 中,Region 是有效性和分布的基本单位,这通常也是我们在维护时能直接操作的最小单位.比如当一个集群 ...

  8. Oracle 恢复被删除的数据,解决误操作删除数据

    在删除数据的时候不小心,把delete语句执行错了,把别的表给delete,而且还执行了commit!真汗.......数据是相当的重要........废话少说了!赶快找方法吧: 第一种: 1.打开F ...

  9. Oracle的学习二:表管理(数据类型、创建/修改表、添加/修改/删除数据、数据查询)

    1.Oracle表的管理 表名和列名的命名规则: 必须以字母开头: 长度不能超过30个字符: 不能使用oracle的保留字: 只能使用如下字符:A-Z, a-z, 0-9, $, # 等. Oracl ...

随机推荐

  1. Appium上下文和H5测试(一)

    坚持原创输出,点击蓝字关注我吧 作者:清菡 博客:oschina.云+社区.知乎等各大平台都有. 目录 一.混合应用-H5 1.混合应用是什么? 2.怎么样分辨一个 App 页面究竟是原生的还是 We ...

  2. Java 枚举 enum 详解

    本文部分摘自 On Java 8 枚举类型 Java5 中添加了一个 enum 关键字,通过 enum 关键字,我们可以将一组拥有具名的值的有限集合创建为一种新的类型,这些具名的值可以作为常规的程序组 ...

  3. 解析MindMapper选项中的鱼骨选项

    MindMapper思维导图可以画鱼骨图,而且完成的相当漂亮,我们可以在选项设置中定义鱼骨图图的默认样式.下面本文就分析了MindMapper选项中可以更改哪些鱼骨图设置. 我们首先打开MindMap ...

  4. ABBYY FineReader 14如何查看PDF文档

    使用 ABBYY FineReader,您可以轻松查看和编辑任何类型的 PDF文档,就像是一款功能强大的PDF编辑转换器,不仅如此,它还能够允许您复制其中的文本.图片和表格.本文我们来看看如何从&qu ...

  5. Java8常用的内置函数式接口(一)Predicate、Consumer、Supplier、Function

    Java8常用的内置函数式接口(一) 简介 JDK 1.8 API中包含了很多内置的函数式接口.有些是在以前版本的Java中大家耳熟能详的,例如Comparator接口,或者Runnable接口.对这 ...

  6. 5w 字 | 172 图 | 超级赛亚级 Spring Cloud 实战

    一.PassJava 项目简介 PassJava-Learning 项目是 PassJava(佳必过)项目的学习教程.对架构.业务.技术要点进行讲解. PassJava 是一款 Java 面试刷题 的 ...

  7. 简单好用的TCP/UDP高并发性能测试工具

    工具下载地址: 链接:https://pan.baidu.com/s/1fJ6Kz-mfFu_RANrgKqYiyA 提取码:0pyf 最近测试智能设备的远程的性能,思路主要是通过UDP对IP和端口发 ...

  8. OpenCV计算机视觉学习(12)——图像量化处理&图像采样处理(K-Means聚类量化,局部马赛克处理)

    如果需要处理的原图及代码,请移步小编的GitHub地址 传送门:请点击我 如果点击有误:https://github.com/LeBron-Jian/ComputerVisionPractice 准备 ...

  9. laradock使用问题汇总

    laradock简介 一套完整的基于Docker的PHP开发环境.包含了预先打包的Docker镜像,所有预先配置都是为了提供一个完美的PHP开发环境(中文文档).PS: 不是最新版的 windows1 ...

  10. Contest 984

    A 先手取最大,后手取最小,答案就是第 \(\left\lceil\frac{n}{2}\right\rceil\) 小的数. 用 nth_element 可以做到 \(O\left(n\right) ...