欢迎投稿

今日深度:

HBase之——脚本编程,

HBase之——脚本编程,


转载请注明出处:https://blog.csdn.net/l1028386804/article/details/88817432

在HBase上进行脚本编程
比如:创建包含两个列族、两个列的表,并插入一些数据,脚本如下:

vim hbasescript.script

create 'table','data'
for i in '0' ... '2' do
for j in '0' ... '2' do
for k in '0' ... '2' do
put 'table', "row-#{i}#{j}#{k}", "data:column#{j}#{k}", "name#{j}#{k}"
end
end
end

执行脚本:

hbase shell hbasescript.script

上面脚本会向表中插入27行记录,当然,我们也可以写脚本向表中加载数据,或者执行各种操作,比如将文本或者CSV文件内容插入表中。

也可以直接登录HBase shell执行命令:

hbase> for i in '0' ... '5' do \
hbase>* put "utable", "rowKey_#{i}", "address:address", "address#{i}" \
hbase>* end

上述脚本会在utable表中插入6行数据。

不登录HBase Shell也可以执行建表语句

echo "create 'tableToCreate', 'colFamily'" | hbase shell

下面的脚本用于扫描表中两个指定行之间的数据

vim scanTable.sh

#!/bin/bash
TableToScan=$1
RowStart=$2
RowEnd=$3
exec hbase shell << EOF
scan "${TableToScan}", {STARTROW => "${RowStart}", STOPROW => "${RowEnd}"}
EOF

可以执行./scanTable.sh emptable row100 row1000, 这会返回emptable表中row100到row1000之间的数据。

.irbrc文件

可以配置.irbrc文件实现HBase shell清屏,保存历史命令等功能。如果此文件不存在于用户的home目录,我们可以创建此文件,将下面的配置复制进去,就可以实现HBase shell清屏并保存历史命令:
1.在home目录下,打开.irbrc并加入如下代码:

vim .irbrc

#Clear HBase shell command
def clear
	system('clear')
end

hadoop_home = "<your hadoop home path here>"

#Enabled hostory(commands executed previously will be preserved) in hbase shell
require "irb/ext/save-history"

#No. of commands to be saved. 50 here
IRB.conf[:SAVE_HISTORY] = 50
# The location to save the history file
IRB.conf[:HISTORY_FILE] = "#{ENV['HOME']}/.irb-save-history"

#List given HDFS path from hbase shell
def ls(path)
	hadoop_home = '<your hadoop home path here>'
	directory = "/" + path
	system("#{hadoop_home}/hadoop fs -ls #{directory}")
end

#<hadoop home path> is the full path of the hadoop directory

Kernel.at_exit do
	IRB.conf[:AT_EXIT].each do |i|
		i.call
	end
end

2.保存文件,打开HBase shell,执行clear和ls命令

hbase> clear
hbase> ls(directory ls)

3.可以将命令赋给变量,并使用:

hbase> var = create 'table', 'colFam'

4.现在可以使用var对table进行操作:

hbase> var.scan

也可以使用put、get命令

5.如果表已经创建了,直接将表赋给变量:

hbase> var = get_table 'table'

6.现在可以使用var对表进行操作:

hbase> var.scan
hbase> var.put 'row', 'colfam:name', 'shashwat'
hbase> var.disable

获取时间戳
通过HBase shell,可以将日期和时间转化成HBase的时间戳,在一些HBase命令中可以使用此时间戳:

hbase> import java.text.SimpleDateFormat
hbase> import java.text.ParsePosition
hbase> SimpleDateFormat.new("").parse("",ParsePosition.new(0)).getTime()

比如下面的例子:

hbase> SimpleDateFormat.new("yyyy-MM-dd HH:mm:ss").parse("2019-03-26 12:30:00", ParsePosition.new(0)).getTime()

在get命令的时候可以指定时间戳

get 'tableToGetDateFrom', 'row1', {COLUMN => 'colFam:Name', TIMESTAMP => 1571890624312}

也可以将时间戳转化成日期和时间:

hbase> import java.util.Date
hbase> Date.new(1571890624312).toString()

开启调试

hbase> debug

或者

hbase shell -d

 

 

www.htsjk.Com true http://www.htsjk.com/hbase/40196.html NewsArticle HBase之——脚本编程, 转载请注明出处:https://blog.csdn.net/l1028386804/article/details/88817432 在HBase上进行脚本编程 比如:创建包含两个列族、两个列的表,并插入一些数据,脚本如下: vim...
相关文章
    暂无相关文章
评论暂时关闭