Phoenix-5.0.0 分布式数据库SQL组件 实验示例

大家好,我是Iggi。

今天我给大家分享的是Phoenix-5.0.0版本的实验示例。

首先用一段文字简介Phoenix:

Phoenix是构建在HBase上的一个SQL组件,能让我们用标准的JDBC APIs来操作HBase数据库进行创建表,插入数据和数据查询等常规操作。

Phoenix完全使用Java编写,作为HBase内嵌的JDBC驱动。Phoenix查询引擎会将SQL查询转换为一个或多个HBase扫描,并编排执行以生成标准的JDBC结果集。直接使用HBase API、协同处理器与自定义过滤器,对于简单查询来说,其性能量级是毫秒,对于百万级别的行数来说,其性能量级是秒。

image.png

想更深入的了解Phoenix知识的同学可以参考以下连接:
http://phoenix.apache.org/presentations/OC-HUG-2014-10-4x3.pdf

好,下面进入正题。介绍Java操作Phoenix示例。

首先,使用IDE建立Maven工程,建立工程时没有特殊说明,按照向导提示点击完成即可。重要的是在pom.xml文件中添加依赖包,内容如下图:


image.png

展示实验代码如下:

package linose.hbase;

import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

//import org.apache.log4j.BasicConfigurator;

/**
 * Hello Phoenix!
 *
 */
public class AppPhoenix {
    
    public static void main( String[] args ) throws IOException, SQLException
    {
        /**
         * 设定MapReduce示例拥有HBase的操作权限
         */
        System.setProperty("HADOOP_USER_NAME", "hbase");
        
        /**
         * 为了清楚的看到输出结果,暂将集群调试信息缺省。
         * 如果想查阅集群调试信息,取消注释即可。
         */
        //BasicConfigurator.configure();
        
        /**
         * 连接Phoenix数据库
         */
        String zookeeper = "jdbc:phoenix:master1.linose.cloud.beijing.com,master2.linose.cloud.beijing.com,master3.linose.cloud.beijing.com:2181";
        Connection conn = DriverManager.getConnection(zookeeper);
        if (null != conn) {
            System.out.println("连接Phoenix成功");
        }
        
        /**
         * 创建表,创建语句对象  id BIGINT not null primary key
         */
        String sql = "CREATE TABLE IF NOT EXISTS PHOENIX_SCHEMA.EMPLOYEE (" +
                "ID BIGINT NOT NULL PRIMARY KEY," +
                "BASIC.NAME VARCHAR," +
                "BASIC.AGE SMALLINT," +
                "BASIC.GENDER BOOLEAN," +
                "DEPART.DEPARTMENT VARCHAR," +
                "DEPART.POST VARCHAR" +
                ")";
        System.out.println("创建SQL语句对象");
        Statement statement = conn.createStatement();
        int result = statement.executeUpdate(sql);
        conn.commit();
        System.out.println("创建PHOENIX_SCHEMA.EMPLOYEE表成功");
        
        /**
         * 写入数据
         */
        sql = "UPSERT INTO PHOENIX_SCHEMA.EMPLOYEE VALUES(1,'Iggi', 33, true, 'technology', 'Senior Engineer')";
        result = statement.executeUpdate(sql);
        if (result != 0) {
            conn.commit();
            System.out.println("写入表数据成功");
        } else {
            conn.rollback();
            System.out.println("写入表数据失败");
        }
        
        /**
         * 查询数据
         */
        System.out.println("开始进行数据查询:");
        sql = "SELECT * FROM PHOENIX_SCHEMA.EMPLOYEE";
        ResultSet resultSet = statement.executeQuery(sql);
        while (resultSet.next()) {
            System.out.println("查询记录:" + resultSet.getInt("ID") + "\t" +
                    resultSet.getString("NAME") + "\t" + 
                    resultSet.getShort("AGE") + "\t" + 
                    resultSet.getBoolean("GENDER") + "\t" + 
                    resultSet.getString("DEPARTMENT") + "\t" + 
                    resultSet.getString("POST") + "\t"
                    );
        }
        
        /**
         * 关闭结果集
         */
        resultSet.close();
        System.out.println("关闭查询结果集");
        
        /**
         * 关闭SQL语句对象、关闭连接
         */
        statement.close();
        conn.close();
        System.out.println("关闭SQL语句对象");
        System.out.println("关闭Phoenix连接");
    }
}

下图为测试结果:


image.png

另外说明一下,Phoenix在创建表时支持的数据类型如下图所示:


image.png

至此,Phoenix-5.0.0 版本实验示例演示完毕。

更多示例请参考:https://github.com/apache/phoenix

你可能感兴趣的:(Phoenix-5.0.0 分布式数据库SQL组件 实验示例)