7

我试图将数据从 HBase Shell 导出到我可以解析的文本文件,然后添加到 msysql db。

我目前正在使用以下命令:

echo "scan 'registration',{COLUMNS=>'registration:status'}" | hbase shell > registration.txt

它将所有内容从 hbase shell 导出到 registration.txt。

如何删除 shell 介绍和摘要,并将数据行附加到文本文件中:

例如: Shell into 我想省略:

HBase Shell; enter 'help<RETURN>' for list of supported commands.
Type "exit<RETURN>" to leave the HBase Shell
Version 0.94.5-mapr, Wed May  1 7:42:07 PDT 2013

总结我想省略:

ROW                                      COLUMN+CELL  
4419 row(s) in 12.9840 seconds
4

3 回答 3

10

试试这个

echo "scan 'registration',{COLUMNS=>'registration:status'}" | hbase shell | grep "^ " > registration.txt

由于结果以单个空格为前缀,因此将过滤掉剩余的内容。

于 2013-11-27T04:29:57.267 回答
1

您可以在管道中再添加一个步骤,以跳过包含所有不需要的内容的前 4 行并实现:

$ echo "scan 'registration',{COLUMNS=>'registration:status'}" | hbase shell \
   |  awk 'NR>5{print$0}'
于 2013-11-26T14:49:53.197 回答
0

您还可以通过在 Bash shell 中使用 here 字符串来做一些简单的事情,例如:

$ hbase shell <<< "scan 'registration',{COLUMNS=>'registration:status'}" \
    | grep "^ " > registration.txt
于 2015-09-24T03:08:14.197 回答