zoukankan      html  css  js  c++  java
  • phoenix表操作

     phoenix表操作

    进入命令行,这是sqlline.py 配置到path环境变量的情况下

    sqlline.py localhost
    如果要退出命令行:!q 或者 !quit

    3.4.1     创建表

    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));
    UPSERT INTO us_population (state, city, population) values ('NY','New York',8143197);
    UPSERT INTO us_population (state, city, population) values ('CA','Los Angeles',3844829);

          在phoenix中,默认情况下,表名等会自动转换为大写,若要小写,使用双引号,如"us_population"。

    3.4.2     显示所有表

    !tables

       退出命令行

          !quit

          具体语法参照官网

    https://phoenix.apache.org/language/index.html#upsert_select

    3.5     phoenix表映射

          默认情况下,直接在hbase中创建的表,通过phoenix是查看不到的,如图1和图2,US_POPULATION是在phoenix中直接创建的,而test是在hbase中直接创建的,默认情况下,在phoenix中是查看不到test的。

    图1 phoenix命令行中查看所有表

     

          如果需要在phoenix中操作直接在hbase中创建的表,则需要在phoenix中进行表的映射。映射方式有两种:视图映射表映射

          hbase 中test的表结构如下,两个列簇name、company.

    Rowkey

    name

    company

    empid

    firstname

    lastname

    name

    address

     

     

     

    3.5.1   hbase命令行中创建表

           $ cd /home/hadoop/hbase/bin

           $ ./hbase shell 进入hbase命令行

           create 'test','name','company' 创建表,如下图

         

          下面的视图映射和表映射均基于该表。

    3.5.2    视图映射(不推荐)

        Phoenix创建的视图是只读的,所以只能用来做查询,无法通过视图对源数据进行修改等操作。而且相比于直接创建映射表,视图的查询效率会低,原因是:创建映射表的时候,Phoenix会在表中创建一些空的键值对,这些空键值对的存在可以用来提高查询效率。

           1)创建视图

    create view"test"(empid varchar primarykey,"name"."firstname" varchar,"name"."lastname"varchar,"company"."name"     varchar,"company"."address"varchar);

           2)删除视图

           drop view "test";

    3.5.3   表映射

      使用Apache Phoenix创建对HBase的表映射,有两种方法:

        1) 当HBase中表已存在,创建同名表和结构即可

        2)当HBase中不存在,可以直接使用create table指令创建需要的表,并且在创建指令中可以根据需要对HBase表结构进行显示的说明。

        第1)种情况下,如在之前的基础上已经存在了表,则表映射的语句如下:

    create table "HBASE_BMDA5"("SS5"  varchar primary key ,
    "info"."NodeType"  INTEGER  ,
    "info"."NodeName"  varchar,
    "info"."IsWarehouse"  INTEGER,
    "info"."IsAssetUser"  INTEGER);

    ps1.主键可以任意指定字符串,不可加列族在前,如::: "SS" varchar primary key (正确),  "info"."SS" varchar primary key(错误)

    ps2:如果phoenix里同时存在"TEST"表,和"test"表,如果要查小写的“test表,表名必须加引号,即select * from "test",如果不加引号,则算是查大写的TEST表
    ps3.类型

    INTEGER                java.lang.Integer        -2147483648 to 2147483647        (4 byte  )
    UNSIGNED_INT            java.lang.Integer        0 to 2147483647                (4 byte  )
    BIGINT                          java.lang.Long            -9223372036854775807 to 9223372036854775807    8 byte
    UNSIGNED_LONG                   java.lang.Long               0 to 9223372036854775807
    TINYINT                         java.lang.Byte                 -128 to 127         1 byte
    UNSIGNED_TINYINT        java.lang.Byte                   0 to 127         1 byte
    SMALLINT                        java.lang.Short                 -32768 to 32767     2 byte
    UNSIGNED_SMALLINT        java.lang.Short                 0 to 32767     2 byte
    FLOAT                           java. lang.Float                 -3.402823466 E + 38 to 3.402823466 E + 38  4 byte 
    UNSIGNED_FLOAT                  java.lang.Float                   -3.402823466 E + 38 to 3.402823466 E + 38  4 byte 
    
    DOUBLE                          java.lang.Double        -1.7976931348623158 E+308  to 1.7976931348623158 E+308  8 byte
    UNSIGNED_DOUBLE                 java.lang.Double                  0 to  1.7976931348623158 E + 308  8 byte           
     DECIMAL                        java.math.BigDecimal        38 digits 
    BOOLEAN                         java.lang.Boolean
    TIME                            java.sql.Time
    DATE                            java.sql.Date
    TIMESTAMP                       java.sql.Timestamp
    UNSIGNED_TIME                   java.sql.Time
    UNSIGNED_DATE                   java.sql.Date
    UNSIGNED_TIMESTAMP        java.sql.Timestamp
    VARCHAR( precisionInt )         java.lang.String
    CHAR ( precisionInt )           java.lang.String
    BINARY ( precisionInt )         byte[]
    VARBINARY                       byte[]
    View Code

    然后数据就直接有了.

        使用create table创建的关联表,如果对表进行了修改,源数据也会改变,同时如果关联表被删除,源表也会被删除。但是视图就不会,如果删除视图,源数据不会发生改变。

    参考:

    浅谈Phoenix在HBase中的应用

  • 相关阅读:
    浅谈自动化测试
    Linux cron定时介绍
    Python上下文管理器
    Robot Framework robot命令
    Web自动化测试之playwright:设置浏览器语言
    Python文件及目录处理方法
    2021google开发者大会
    linux环境变量设置小结
    Eclipse快捷键
    java计时 小计
  • 原文地址:https://www.cnblogs.com/xiaoliu66007/p/9377922.html
Copyright © 2011-2022 走看看