apache-phoenix-5.0.0-HBase-2.0 服务端集成及客户端调用

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>