Java知识分享网 - 轻松学习从此开始!    

Java知识分享网

Java1234官方群25:java1234官方群17
Java1234官方群25:838462530
        
SpringBoot+SpringSecurity+Vue+ElementPlus权限系统实战课程 震撼发布        

最新Java全栈就业实战课程(免费)

springcloud分布式电商秒杀实战课程

IDEA永久激活

66套java实战课程无套路领取

锋哥开始收Java学员啦!

Python学习路线图

锋哥开始收Java学员啦!
当前位置: 主页 > Java文档 > Java基础相关 >

Phoenix文档 PDF 下载


分享到:
时间:2020-09-04 08:58来源:http://www.java1234.com 作者:小锋  侵权举报
Phoenix文档 PDF 下载
失效链接处理
Phoenix文档 PDF 下载

 
本站整理下载:
 
相关截图:
 
主要内容:

安装步骤
1、配置Phoenix的parcel下载地址https://archive.cloudera.com/phoenix/6.2.0/parcels/
2、分配并激活Phoenix的parcel包
 
 
3、将Phoenix的CSD jar包放在Cloudera-scm-server机器上的/opt/cloudera/csd/目录下;并重启cloduera-scm-server
4、Cloudera-manager页面添加Phoenix服务并勾选开启kerberos即可。
5、修改hbase配置:
hbase-site.xml 的 HBase 服务高级配置代码段(安全阀)和hbase-site.xml 的 HBase 客户端高级配置代码段(安全阀)都需要添加如下三个配置:
 
6、重启Phoenix、hbase并重新部署客户端配置
7、至此,Phoenix安装结束。
Phoenix简介
Phoenix作为应用层和HBASE之间的中间件,以下特性使它在大数据量的简单查询场景有着独有的优势
二级索引支持(global index + local index)
编译SQL成为原生HBASE的可并行执行的scan
在数据层完成计算,server端的coprocessor执行聚合
下推where过滤条件到server端的scan filter上
利用统计信息优化、选择查询计划(5.x版本将支持CBO)
skip scan功能提高扫描速度
对于CDH集群集成的Phoenix一般可以使用以下两种方式访问Phoenix
1.phoenix-sqlline
2.JDBC-API
 
连接方式
Phoenix-sqlline 
1、由于开启了kerberos,登录服务器后应先kinit成具有相应权限的用户。
kinit –kt phoenix.keytab phoenix/qdedhtest3@XXX.COM
2、控制台输入phoenix-sqlline
3、展示所有表:
4、退出: !table
5、其他详细命令见:!help
JDBC-API 
有两种连接方式,一是jdbc:phoenix:zookeeper,这种方式是直连zookeeper,比较重。
我们推荐使用jdbc:phoenix:thin:url这种是连接phoenix query server,比较轻量化。
Maven依赖:
<dependency>
    <groupId>com.aliyun.phoenix</groupId>
    <artifactId>ali-phoenix-shaded-thin-client</artifactId>
    <version>5.2.1-HBase-2.x</version>
</dependency>
<dependency>
    <groupId>com.google.protobuf</groupId>
    <artifactId>protobuf-java</artifactId>
    <version>3.12.0</version>
</dependency>
 
Java API 示例:
package util;
 
import org.apache.hadoop.security.UserGroupInformation;
import org.apache.log4j.Logger;
import java.io.IOException;
import java.sql.*;
 
 
public class phoenixUtil {
    private static Logger log = Logger.getLogger(phoenixUtil.class);
 
    /*
     * 获取连接
     */
    public Connection getConn() {
 
        /*
         *jar包部署在linux系统中,会默认使用/etc/krb5.conf文件
         * 若部署在windows系统中,则需自己指定krb5.conf路径
         */
 
        if (System.getProperty("os.name").toLowerCase().startsWith("win")) {
            System.setProperty("java.security.krb5.conf", "F:\\keytab\\krb5.conf");
        }
 
        Connection conn = null;
        try {
            Class.forName("org.apache.phoenix.queryserver.client.Driver");
            String url="jdbc:phoenix:thin:url=http://qdedhtest3:8765;serialization=PROTOBUF;authentication=SPNEGO;" +
                    "principal=phoenix/qdedhtest3@XXX.COM;keytab=F:\\keytab\\phoenix.keytab";
            conn = DriverManager.getConnection(url);
        } catch (ClassNotFoundException e) {
            log.error(e.getMessage());
            e.printStackTrace();
        } catch (SQLException e1) {
            log.error(e1.getMessage());
            e1.printStackTrace();
        }
        return conn;
 
    }
 
    /**
     * 关闭资源
     * @param conn
     * @param statement
     * @param rs
     */
    public void closeRes(Connection conn, Statement statement, ResultSet rs) {
        try {
            if (conn != null) {
                conn.close();
            }
            if (statement != null)
                statement.close();
            if (rs != null)
                rs.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
 
 
    /**
     * 通过phoenix 创建表、插入数据、索引、查询数据
     * 写入数据conn.setAutoCommit(false);
     * 删除数据conn.setAutoCommit(true);
     * phoenix demo
     */
    public void phoenixDemo() {
        Connection conn = getConn();
        ResultSet rs = null;
        Statement stmt = null;
        try {
            stmt = conn.createStatement();
 
            stmt.execute("drop table if exists dl_yh.test_java");
            stmt.execute("create table dl_yh.test_java (mykey integer not null primary key, mycolumn varchar)");
            stmt.execute("create index test_idx on dl_yh.test_java(mycolumn)");
            for (int i = 0; i < 100; i++) {
               stmt.executeUpdate("upsert into dl_yh.test_java values ("+ i +",'The num is "+ i +"')");
            }
            conn.commit();
            PreparedStatement statement = conn.prepareStatement("select mykey from dl_yh.test_java where mycolumn='The num is 88'");
            rs = statement.executeQuery();
            while (rs.next()) {
                System.out.println("-------------The num is ---------------" + rs.getInt(1));
            }
        } catch (SQLException e) {
            log.error(e.getMessage());
            e.printStackTrace();
        } finally {
            closeRes(conn,stmt,rs);
        }
    }
 
    public static void main(String[] args) {
        phoenixUtil phoenixUtil = new phoenixUtil();
        phoenixUtil.phoenixDemo();
    }
 
 
}



 
 

------分隔线----------------------------

锋哥公众号


锋哥微信


关注公众号
【Java资料站】
回复 666
获取 
66套java
从菜鸡到大神
项目实战课程

锋哥推荐