习惯了通过sql操作关系数据库,突然改成操作nosql数据库,会发现有很多不方便。虽然hbase提供了api,但日常操作不可能都去现写程序。下面介绍一个可以通过sql规范操作hbase表的开源项目-phoenix,现在该项目已经转到了apache下。(项目地址:http://phoenix.incubator.apache.org/)下面介绍一下安装方式:
1、从路径
https://github.
com/forc
edot
com/pho
enix/wiki/Download下载最新版本的tar包。(个人感觉每个版本之间相差很大,我所知道的pho
enix-2.0.x-in
stall.tar和
phoenix-2.2.x相差就很多)2、解压下载的tar包,将phoenix-x.x.x.jar包分别复制到集群hbase安装目录的lib目录下,只需要复制这一个包就可以了。
3、重启hbase集群。
4、打开http://ip:60010/ma
st
er-
statu
s页面,会发现多了一张
SYSTEM.TABLE的表,如果没有,可能是反应慢,可以稍等一会。
现在就可以通过jdbc的方式访问hbase了,访问时需要把步骤2中解压的phoenix-x.x.x-client.jar包添加到项目中。
访问代码参考:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.PreparedStatement;
import java.sql.Statement;
public class test {
public static void main(String[] args) throws SQLException {
Statement stmt = null;
ResultSet rset = null;
Connection con = DriverManager.getConnection("jdbc:phoenix:[zookeeper]");
stmt = con.createStatement();
stmt.executeUpdate("create table test (mykey integer not null primary key, mycolumn varchar)");
stmt.executeUpdate("upsert into test values (1,'Hello')");
stmt.executeUpdate("upsert into test values (2,'World!')");
con.commit();
PreparedStatement statement = con.prepareStatement("select * from test");
rset = statement.executeQuery();
while (rset.next()) {
System.out.println(rset.getString("mycolumn"));
}
statement.close();
con.close();
}
}
附:1、现支持的sql语法:http://phoenix.incubator.apache.org/language/index.html
2、shell命令介绍
在步骤2的解压目录下,打开bin目录,会发现有一个sqlline.sh文件,执行命令:./sqlline.sh localhost(也可以是集群的其他ip)以后就可以使用sql命令进行操作了。