[Phoenix] 一、快速入门

简介: 介绍Phoenix优势以及入门使用

Phoenix作为应用层和HBASE之间的中间件,以下特性使它在大数据量的简单查询场景有着独有的优势

  • 二级索引支持(global index + local index)
  • 编译SQL成为原生HBASE的可并行执行的scan
  • 在数据层完成计算,server端的coprocessor执行聚合
  • 下推where过滤条件到server端的scan filter上
  • 利用统计信息优化、选择查询计划(5.x版本将支持CBO)
  • skip scan功能提高扫描速度

一般可以使用以下三种方式访问Phoenix

  1. JDBC API
  2. 使用Python编写的命令行工具(sqlline, sqlline-thin和psql等)
  3. SQuirrel

一、命令行工具psql使用示例

1.创建一个建表的sql脚本文件us_population.sql:
CREATE TABLE IF NOT EXISTS us_population (
    state CHAR(2) NOT NULL,
    city VARCHAR NOT NULL,
    population BIGINT
    CONSTRAINT my_pk PRIMARY KEY (state, city));
2. 创建csv格式的数据文件us_population.csv:
NY,New York,8143197
CA,Los Angeles,3844829
IL,Chicago,2842518
TX,Houston,2016582
PA,Philadelphia,1463281
AZ,Phoenix,1461575
TX,San Antonio,1256509
CA,San Diego,1255540
TX,Dallas,1213825
CA,San Jose,912332
3. 创建一个查询sql脚本文件us_population_queries.sql
SELECT state as "State",count(city) as "City Count",sum(population) as "Population Sum"
FROM us_population
GROUP BY state
ORDER BY sum(population) DESC;
4. 执行psql.py工具运行sql脚本
./psql.py <your_zookeeper_quorum> us_population.sql us_population.csv us_population_queries.sql

二、JDBC API使用示例

1. 使用Maven构建工程时,需要添加以下依赖
<dependencies>
    <dependency>
        <groupId>com.aliyun.phoenix</groupId>
        <artifactId>ali-phoenix-core</artifactId>
        <version>${version}</version>
    </dependency>
</dependencies>
2. 创建名为test.java的文件
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();
    }
}
3.执行test.java
javac test.java

java -cp "../phoenix-[version]-client.jar:." test

三、SQuirrel使用示例

参考这里

目录
相关文章
|
6月前
|
存储 缓存 分布式计算
HBase入门指南
HBase是一个开源的非关系型分布式数据库,设计初衷是为了解决大量结构化数据存储与处理的需求
200 0
HBase入门指南
|
7月前
|
SQL 监控 关系型数据库
ClickHouse快速入门 2
ClickHouse快速入门
165 0
|
8月前
|
存储 Java Linux
10分钟入门Flink--安装
本文介绍Flink的安装步骤,主要是Flink的独立部署模式,它不依赖其他平台。文中内容分为4块:前置准备、Flink本地模式搭建、Flink Standalone搭建、Flink Standalong HA搭建。
10分钟入门Flink--安装
|
机器学习/深度学习 分布式计算 Java
Hbase入门(二)——安装与配置
本文讲述如何安装,部署,启停HBase集群,如何通过命令行对Hbase进行基本操作。 并介绍Hbase的配置文件。 在安装前需要将所有先决条件安装完成。
536 0
Hbase入门(二)——安装与配置
|
1月前
|
分布式计算
mapreduce 快速入门
mapreduce 案例 【2月更文挑战第14天】
25 2
|
4月前
|
消息中间件 资源调度 Kafka
2021年最新最全Flink系列教程_Flink快速入门(概述,安装部署)(一)(JianYi收藏)
2021年最新最全Flink系列教程_Flink快速入门(概述,安装部署)(一)(JianYi收藏)
56 0
|
4月前
|
缓存 分布式计算 Java
Hbase快速入门(安装部署)
Hbase快速入门(安装部署)
117 0
|
7月前
|
存储 SQL 关系型数据库
ClickHouse快速入门 1
ClickHouse快速入门
62 0
|
7月前
|
关系型数据库 MySQL 数据库
课时1:5分钟上手 Flink MySQL 连接器
课时1:5分钟上手 Flink MySQL 连接器
157 0
|
存储 SQL 分布式计算
BigData之Hbase:Hbase数据管理的简介、下载、案例应用之详细攻略
BigData之Hbase:Hbase数据管理的简介、下载、案例应用之详细攻略
BigData之Hbase:Hbase数据管理的简介、下载、案例应用之详细攻略