我编写了一个脚本来计算每2小时有多少条记录被插入到3个单独的hbase表中。我知道这是伪劣的,但它工作得很好,我检索到预期的结果。。。。但是,每次hbase shell在循环中运行时,我都必须调用它。
有没有办法改进我的代码,使我不必这样做来加快速度?
# !/bin/bash
declare -a hbaseTables=("table1" "table2" "table3");
for i in "${hbaseTables[@]}"
do
echo $i >> results.txt
time=1431925200000
for ((x=0; x<2; x=x+1))
do
hbase shell <<EOF | tail -2 | grep -oE "^[0-9]+" >> results.txt
scan '$i', {TIMERANGE => [$time,$time+7199999]}
EOF
time=$time+7200000
done
echo ----- >> results.txt
done
2条答案
按热度按时间62o28rlo1#
hbase shell是用ruby编写的,因此您可以完全访问任何ruby命令。
例如,如果我想删除集群中所有不以字符串dev01开头的表,我可以这样做:
以上内容为
list
排列成a
. 然后在复制的数组中删除,a
,所有以dev01
,然后循环遍历a
并运行hbase shell命令disable X
然后drop X
.42fyovps2#
在电信工作期间,我经常需要与各种没有任何api的cli工具进行交互。对于几乎所有这样的情况,expect是一个完美的工具。所以它可以按照“expect prompt”然后“write command”然后“collect output”的方式工作。对于高级脚本,可以将其与tcl语言相结合。
对我来说,它曾经允许通过ssh控制几个路由器的分布式设置。所以这绝对是你可以使用的方法,问题是它是否太强大。
另一种方法是将hbase shell的脚本准备到外部文件中,然后通过输出处理执行它。也许这是努力和结果的最佳结合。