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[]

然后数据就直接有了.

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

参考:

浅谈Phoenix在HBase中的应用

phoenix表操作的更多相关文章

  1. Phoenix表和索引分区优化方法

    Phoenix表和索引分区,基本优化方法 优化方法 1. SALT_BUCKETS RowKey SALT_BUCKETS 分区 2. Pre-split RowKey分区 3. 分列族 4. 使用压 ...

  2. Mysql常用表操作 | 单表查询

    160905 常用表操作 1. mysql -u root -p 回车 输入密码   2. 显示数据库列表 show databases     3. 进入某数据库 use database data ...

  3. Sql Server系列:数据表操作

    表是用来存储数据和操作数据的逻辑结构,用来组织和存储数据,关系数据库中的所有数据都表现为表的形式,数据表由行和列组成.SQL Server中的数据表分为临时表和永久表,临时表存储在tempdb系统数据 ...

  4. 学习MySQL之单表操作(二)

    ##单表操作 ##创建表 CREATE TABLE t_employee( empno ), ename ), job ), MGR ), Hiredate DATE DEFAULT '0000-00 ...

  5. python——Django(ORM连表操作)

    千呼万唤始出来~~~当当当,终于系统讲了django的ORM操作啦!!!这里记录的是django操作数据库表一对多.多对多的表创建及操作.对于操作,我们只记录连表相关的内容,介绍增加数据和查找数据,因 ...

  6. mysql数据表操作&库操作

    首先登陆mysql:mysql -uroot -proot -P3306 -h127.0.0.1 查看所有的库:show databases; 进入一个库:use database; 显示所在的库:s ...

  7. SQL server基础知识(表操作、数据约束、多表链接查询)

    SQL server基础知识 一.基础知识 (1).存储结构:数据库->表->数据 (2).管理数据库 增加:create database 数据库名称 删除:drop database ...

  8. Python之Django--ORM连表操作

    一对多 class UserType(models.Model): caption = models.CharField(max_length=32) class UserInfo(models.Mo ...

  9. spark使用Hive表操作

    spark Hive表操作 之前很长一段时间是通过hiveServer操作Hive表的,一旦hiveServer宕掉就无法进行操作. 比如说一个修改表分区的操作 一.使用HiveServer的方式 v ...

随机推荐

  1. oracle启用异步IO(db file async I/O submit)

    市局双随机awr报告中有大量db file async I/O submit等待事件 参考两篇文章: [案例]Oracle等待事件db file async I/O submit产生原因和解决办法 d ...

  2. 【转】Vim速查表-帮你提高N倍效率

    Vim速查表-帮你提高N倍效率 转自:https://www.jianshu.com/p/6aa2e0e39f99 去年上半年开始全面使用linux进行开发和娱乐了,现在已经回不去windows了. ...

  3. AUTOML --- Machine Learning for Automated Algorithm Design.

    自动算法的机器学习: Machine Learning for Automated Algorithm Design. http://www.ml4aad.org/ AutoML——降低机器学习门槛的 ...

  4. 关于国产手机(含山寨机)的mrp格式文件使用

    目前国内的大多数国产手机(山寨机)均支持MRP格式软件,本文将教你如何测试或安装!(MRP格式游戏,是由[杭州斯凯网络科技有限公司]开发的一种轻量级的虚拟平台MINIJ平台格式文件,用标准的ANSI ...

  5. MySQL查询语句练习题,测试基本够用了

    Sutdent表的定义 字段名 字段描述 数据类型 主键 外键 非空 唯一 自增 Id 学号 INT(10) 是 否 是 是 是 Name 姓名 VARCHAR(20) 否 否 是 否 否 Sex 性 ...

  6. Selenium+Java自动化之如何优雅绕过验证码

    前言: 验证码问题对于每个ui自动化的同学而言,相信都是个蛋疼的问题,对于验证码的处理我个人不提倡破解,不要去想破解方法,这个验证码本来就是为了防止别人自动化登录的.如果你们公司的验证码很容易被你破解 ...

  7. Java并发编程的4个同步辅助类(CountDownLatch、CyclicBarrier、Semaphore、Phaser)

    我在<JDK1.5引入的concurrent包>中,曾经介绍过CountDownLatch.CyclicBarrier两个类,还给出了CountDownLatch的演示案例.这里再系统总结 ...

  8. orm分组,聚合查询,执行原生sql语句

    from django.db.models import Avg from app01 import models annotate:(聚合查询) ret=models.Article.objects ...

  9. js---数组排序法(冒泡排序;快速排序)

    1.冒泡排序 原理:将数组的相邻两个元素进行比较,大的就往后移,小的往前,依次比较并且进行递减迭代. var arr =[54,36,89,1,3,5,2]; function sortArr(arr ...

  10. ADO.NET连接字符串大全---各种数据库的连接字符串

    ADO.NET连接字符串大全 ADO.NET连接字符串 名称 ADO.NET连接字符串 说明 ADO.NET连接字符串:SQL Server,SQL Server 2005,ACCESS,Oracle ...