zoukankan      html  css  js  c++  java
  • Phoenix

    Phoenix - Hbase与SQL

    Phoenix是什么

    简单来说,Phoenix 是一个可以让我们通过SQL的方式操作HBase数据库的框架。

    HBase是一个NoSQL数据库,shell客户端只支持一些简单的操作,而且看起来容易晕。

    例如下面这个图,返回的是一张表的所有数据:

    是不是很难看,而且如果对HBase进行复杂查询的话,只能通过HBase的原生API编写查询程序,这样就比较麻烦。

    使用Phoenix的话,就可以使用SQL来查询,便捷高效,同时还可以为HBase添加二级索引,提升查询性能,还有其他一些方便的特性。

    Phoenix 支持通过编写JDBC代码来操作HBase,比原生API更方便。

    用法示例

    建表

    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));

    查看表

    0: jdbc:phoenix:localhost> !tables

    到 HBase 中查看:

    hbase(main):041:0> list

    结果信息:

    TABLE
    SYSTEM.CATALOG
    SYSTEM.FUNCTION
    SYSTEM.SEQUENCE
    SYSTEM.STATS
    US_POPULATION    
    ...

    成功生成了 US_POPULATION 表。

    添加数据

    先新建一个测试数据文件 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

    执行命令,把文件中的数据导入到数据库:

    ./psql.py localhost us_population.csv

    查询表数据:

    0: jdbc:phoenix:localhost> select * from US_POPULATION; 

    示例

    Phoenix自带了一个web统计的小示例,先执行命令把他导入进来:

    bin/psql.py localhost examples/WEB_STAT.sql examples/WEB_STAT.csv

    先执行了建表sql,然后导入数据文件csv。

    查询表数据:

    0: jdbc:phoenix:localhost> select * from WEB_STAT;

    COREDB字段是CPU和数据库使用量。

    根据DOMAIN分组,查看每组平均CUP、数据库使用情况:

    SELECT DOMAIN, AVG(CORE) Average_CPU_Usage, AVG(DB) Average_DB_Usage
    FROM WEB_STAT
    GROUP BY DOMAIN
    ORDER BY DOMAIN DESC;

    查看各个domain的访问数,从高到低排序:

    select domain,count(1) num 
    from web_stat 
    group by domain 
    order by num desc;  

    小结

    Phoenix 的基础功能就是在 HBase 之上添加了 SQL 层,可以让我们更方便的使用 HBase。

    Phoenix 有很多优秀特性,例如:二级索引、命名空间映射、视图、多租户、动态列、事务 ……

    而且现在已经发展的非常完善,可以集成 Spark、Hive、Pig、MapReduce,还有 Flume 插件。

  • 相关阅读:
    python 学习常见问题笔记
    mac os 使用 from scipy.misc import imread ImportError: cannot import name 'imread'
    mac解决安装提示“xxx软件已损坏,打不开,您应该将它移到废纸篓”的提示
    一文搞懂HMM(隐马尔可夫模型)
    docker从容器里面拷文件到宿主机或从宿主机拷文件到docker容器里面
    centos 7 安装python3 & pip3
    HTK HResults计算字错率(WER)、句错率(SER)
    sublime text3安装ConvertToUTF8
    intellij idea 解决2019年4月到期延期问题
    Python 3 教程
  • 原文地址:https://www.cnblogs.com/jun1019/p/6260519.html
Copyright © 2011-2022 走看看