1、下载并拷贝 htrace-core-3.1.0-incubating.jar 和 phoenix-5.0.0-HBase-2.0-server.jar 到 Hbase 的 /home/hbase-2.2.4/lib 目录下;
重启Hbase服务。
2、客户端代码:
package test; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import org.apache.log4j.Logger; public class PhoenixHelper { private static final Logger LOG = Logger.getLogger(PhoenixHelper.class); private static final String JDBC_DRIVER_CLASS = "org.apache.phoenix.jdbc.PhoenixDriver"; // jdbc:phoenix:192.168.1.19:2181:/hbase中的/hbase为HBase注册到zooKeeper的根目录, 如使用HBase自带的zooKeeper,默认为"hbase" private static final String JDBC_URL = "jdbc:phoenix:39.108.***.***:2181:/hbase"; public static Connection getConn(){ try { // 注册Driver Class.forName(JDBC_DRIVER_CLASS); // 返回Connection对象 return DriverManager.getConnection(JDBC_URL); } catch (SQLException | ClassNotFoundException e ) { e.printStackTrace(); LOG.error("获得连接失败!"); return null; } } public static void closeConn(Connection conn){ try { if (!conn.isClosed()) conn.close(); } catch (SQLException e) { e.printStackTrace(); LOG.error("关闭连接失败!"); } } public static void main(String[] args){ Connection conn = getConn(); System.out.println(conn.toString()); try { Statement stat = conn.createStatement(); // String sql="create table test_phoenix_api(mykey integer not null primary key ,mycolumn varchar )"; // stat.executeUpdate(sql); // conn.commit(); // String sql1="upsert into test_phoenix_api values(1,'test1')"; // String sql2="upsert into test_phoenix_api values(2,'test2')"; // String sql3="upsert into test_phoenix_api values(3,'test3')"; // stat.executeUpdate(sql1); // stat.executeUpdate(sql2); // stat.executeUpdate(sql3); // conn.commit(); ResultSet rs = stat.executeQuery("select * from test_phoenix_api"); while (rs.next()) { String mykey = rs.getString("mykey"); //表中的列名 String mycolumn = rs.getString("mycolumn"); //表中的列名 System.out.println("mykey=" + mykey + " mycolumn="+mycolumn); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } closeConn(conn); } }
如提示用户不存在:
2021-01-27 14:38:51,671 WARN [RpcServer.default.FPBQ.Fifo.handler=29,queue=2,port=16000] security.ShellBasedUnixGroupsMapping: unable to return groups for user LX PartialGroupNameException The user name 'LX' is not found. id: ‘LX’: no such user id: ‘LX’: no such user at org.apache.hadoop.security.ShellBasedUnixGroupsMapping.resolvePartialGroupNames(ShellBasedUnixGroupsMapping.java:212) at org.apache.hadoop.security.ShellBasedUnixGroupsMapping.getUnixGroups(ShellBasedUnixGroupsMapping.java:133) at org.apache.hadoop.security.ShellBasedUnixGroupsMapping.getGroups(ShellBasedUnixGroupsMapping.java:72)
则在 /home/hbase-2.2.4/conf/hbase-site.xml 文件追加配置:
<property>
<name>hbase.superuser</name>
<value>hbase,root,lixj,LX</value>
</property>