使用unixshell脚本从hbase中删除30天以前的快照

kkbh8khc  于 2021-06-08  发布在  Hbase
关注(0)|答案(2)|浏览(465)

我想从中删除30天以前的快照 HBASE 使用shell脚本。我已经写了下面的函数,但该函数将删除所有快照。30天以前的逻辑也需要实施。

deleteSnapshot() {

  echo -e "list_snapshots '${NAMESPACE}_${TABLE}'" | hbase shell -n | grep ''${NAMESPACE}'_'${TABLE}'' 2>/dev/null

  local RET=$?

  if [ ${RET} -eq 0 ]; then
      echo "Deleting Snapshot ${NAMESPACE}_${TABLE}"
      echo -e "delete_snapshot '${NAMESPACE}_${TABLE}'" | hbase shell -n 2>/dev/null
      echo "Successfully deleted Snapshot ${NAMESPACE}_${TABLE}"
  fi
}

我需要帮助。

uplii1fm

uplii1fm1#

一次删除多个快照的快速而肮脏的方法:

如果我们的快照名称是:table\u name\u snapshot\u 20190701

delete_all_snapshot 'table_name_snapshot_201907.*'

这会删除七月的任何内容。这个 . 中的名称用作快照名称其余部分的截止(我们已用通配符替换了该名称) * )

vaqhlq81

vaqhlq812#

您可以将时间戳附加到快照名称,并应用正则表达式以仅匹配早于30天的快照。
您可以参考以下文档:
https://www.cloudera.com/documentation/enterprise/5-2-x/topics/cm_bdr_managing_hbase_snapshots.html#concept_aqd_sry_bp

相关问题