zoukankan      html  css  js  c++  java
  • HBase查询引擎—Phoenix

    1. 简介

    Apache Phoenix,是由saleforce.com开源的一个项目,后又捐给了Apache基金会。它相当于一个Java中间件,提供jdbc连接,操作hbase数据表,Phoenix 使得Hbase 支持通过JDBC的方式进行访问,并将你的SQL查询转换成Hbase的扫描和相应的动作。

    地址:http://phoenix.apache.org/

    兼容性:

    • Phoenix 2.x - HBase 0.94.x
    • Phoenix 3.x - HBase 0.94.x
    • Phoenix 4.x - HBase 0.98.1+

    2. 安装

    hadoop2.5.1

    hbase0.98.6.1

    phoenix-4.4.0-HBase-0.98/

    • download and expand our installation tar
    • copy the phoenix jar into the HBase lib directory of every region server
    • restart the region servers
    • add the phoenix client jar to the classpath of your HBase client
    • download and setup SQuirrel as your SQL client so you can issue adhoc SQL against your HBase cluster

    2.1下载

    官网下载地址:http://www.apache.org/dyn/closer.cgi/phoenix/

    2.2解压

    上传到主节点指定目录下解压:

    tar –zxvf phoenix-4.4.0-HBase-0.98-bin.tar.gz

    2.3拷贝文件

    将phoenix-4.4.0-HBase-0.98-server.jar拷贝到hbase集群的lib目录下

    重启hbase集群,使其生效

    2.4验证

    cd /usr/local/phoenix-4.4.0-HBase-0.98-bin/bin

    ./sqlline.py 192.168.0.177

    success

    3. 创建表和视图

    phoenix操作hbase,我们有两种方式,创建表,创建视图。

    创建表的话,可读可写,就可以对HBase进行插入,查询,删除操作。

    视图的话,是只读的,一般就只可以进行查询操作

    虽然看起来,表的功能,比视图更强大一些。但是就像是mysql等关系型数据库一样,删除表操作,会将表删掉。但是删除视图操作,却不会影响原始表的结构。

    因为使用phoenix,创建表后,会自动和hbase建立关联映射。当你使用phoenix删除和hbase之间的关系时,就会将hbase中的表也删掉了

    所以如果只是用到查询功能,只需要建立视图就ok了。

    创建表

    create htablename(
    
        --这句话直接写就可以了,这样的话,HBase中的RowKey转换成phoenix中的主键,列名就叫 pk。
        --rowkey自动会和primary key进行对应。
        pk VARCHAR primary key null,
    
        --将名为cf的columnFamily下,字段名为col1的字段,写在这里。
        "cf"."col1" VARCHAR null,
    
        --将名为cf的columnFamily下,字段名为col2的字段,写在这里。。。下面就以此类推
        "cf"."col2" VARCHAR null,
        "cf2"."col3" VARCHAR null,
        "cf2"."col4" VARCHAR null
    )

    创建hbase中已存在表的视图

    CREATE VIEW "login_log" ( pk VARCHAR PRIMARY KEY,"login"."usr" VARCHAR, "login"."timestamp" VARCHAR, "login"."ip" VARCHAR, "login"."province" VARCHAR, "login"."city" VARCHAR, "login"."district" VARCHAR, "login"."success" VARCHAR, "login"."type" VARCHAR)DEFAULT_COLUMN_FAMILY='login';


    注意:phoenix区分大小写

    "login_log" 用双引号是因为hbase中表名为login_log,为小写,双引号使创建的视图为小写,与hbase表对应。

    如此处不加双引号,则创建的视图为LOGIN_LOG

    字段也如此。

    4. SQuirreL

    第一步: 下载安装SQuirreL SQL Client :    http://www.squirrelsql.org/ 

    第二步:  拷贝phoenix-{version}-client.jar 和 phoenix-core-{version}.jar到SQuirreL 安装目录下的lib文件夹下,这两个jar可以在phoenix的安装目录下找到。

    第三步:  打开SQuirreL , 点击Drivers,新建一个driver:

    name : 可以自定义一个名称

    Example URL : 这个是为了让你新建一个连接的时候作为提示用的

    Java Class Path : 这个需要选中之前上传的JAR

    Class Name: org.apache.phoenix.jdbc.PhoenixDriver

    第四步:创建Aliases(就是创建一个hbase的connection):

    Name: 可以自定义

    Driver: 选择之前配置好的phoenix driver

    URL: 这里初始化显示的是之前配置的Example URL, 可以在这里做具体的修改,192.168.0.177修改为zk地址

    配置好以后点击Test,输入服务器用户名、密码,测试连接,连接成功后进入如下页面:

    查询已创建的视图:

    此处只有一级索引,在通过非rowkey进行查询时查询速度会比较慢,300W数据会在10s左右,目前的Phoenix已支持二级索引,通过二级索引进行查询会实现毫秒级响应,下篇会介绍Phoenix二级索引的创建

  • 相关阅读:
    利用runtime检測这个对象是否存在某属性?
    Android Studio 使用 SVN 必然遇到问题:commit ** File out of data 问题解决方法
    JPA測试实例
    pat(A) 1063. Set Similarity(STL)
    @Override用在哪儿
    Highcharts数据表示(3)
    #pragma pack (n) 惹的祸
    C++二阶构造函数
    使用自定义的控件
    C++ explicit
  • 原文地址:https://www.cnblogs.com/iiot/p/4608127.html
Copyright © 2011-2022 走看看