IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> Phoenix笔记 —— 视图映射与关联表映射 -> 正文阅读

[大数据]Phoenix笔记 —— 视图映射与关联表映射

phoenix可以用sql语句的形式来操作hbase数据库中的数据,并且phoenix可以支持大部分的mysql里面的sql语法与格式。因此具体的操作,比如增删改查本篇博客不记录了,与mysql里面的sql语句差不多。
但是需要注意以下,phoenix的插入语句不是insert,而是upsert
upsert into “表名” values()

这里记录一下phoenix与hbase的表的映射
一般情况下,phoenix是查看不到在hbase中创建的表。因此如果想要在phoenix中操作hbase中的表,就需要通过表映射的操作。

映射方式有两种:视图映射与表映射

视图映射

在phoenix中创建hbase的表的视图,视图只能用来查询,不能通过视图对源数据(hbase的表中存储的数据)进行增删改等操作

先在hbase里面创建一张表

hbase(main):007:0> create 'student','name','age'

往表中插入一条数据

put 'student','1001','name:firstname','zhang1'
put 'student','1001','name:lastname','zhang2'
put 'student','1001','age:big','18'
put 'student','1001','age:small','17'

插入数据完成后,在phoenix中创建这张表的视图

create view "student"(
studentid varchar primary key,
"name"."firstname" varchar,
"name"."lastname"  varchar,
"age"."big"  varchar,
"age"."small" varchar
)column_encoded_bytes=0;

在这里插入图片描述
查询一下视图里面的数据
在phoenix查询数据时,要将给表名加上双引号
在这里插入图片描述
测试一下能否在视图中修改数据
在这里插入图片描述
发现会报错,提示视图是 read only,只读不能修改

那么接下来再测试一下,如果将hbase中的表删除(即删除源数据)

hbase(main):013:0> disable 'student';
hbase(main):014:0* drop 'student';

在这里插入图片描述
再到phoenix里面查询视图student里面的数据,就会报错

但是用 !table 查询全部的表时,会发现依旧还有 student视图的记录,此时还需要删除一下这个视图
在这里插入图片描述
在这里插入图片描述

表映射

在phoenix中使用建表语句,create table 表名分为两种情况,(假设这里要在phoenix中创建student表)

  1. HBase中存在student表,则phoenix的建表语句本质上不是创建一张新表,而是类似于创建Hbase表的视图的方式,创建一张关联表。
  2. HBase中不存在student表,则phoenix的建表语句是在创建一张新的表

这里再到hbase中将上面删去的student表重新创建回来并且加载数据
然后到phoenix中输入以下的建表语句

create table "student" (
empid varchar primary key,
"name"."firstname" varchar,
"name"."lastname"varchar,
"age"."big"  varchar,
"age"."small" varchar
)column_encoded_bytes=0;

在这里插入图片描述
注意这里的Table_type,表的类型是table,而不是视图
现在查询一下表里面的数据
在这里插入图片描述
这里就会发现phoenix这里创建的是关联表,关联的是hbase中的同名表的数据

修改一下源数据的数据

hbase(main):021:0> put 'student','1001','name:firstname','chen1'

再来查看一下phoenix表中的数据
在这里插入图片描述
发现这里的数据也发生了改变

那么现在修改phoenix里面的数据,来看看hbase里面的源数据会不会发生变动

upsert into "student" values('1002','wang1','wang2','12','11');

在这里插入图片描述
在这里插入图片描述

这里就需要强调一下视图与关联表的区别了

  1. 关联表的数据可以改变,并且会影响hbase里面的数据
  2. 视图里面的数据不能改变
  3. 删除关联表,会导致源表也被删除
  4. 删除视图,不会影响到hbase中的源表

前面尝试了在phoenix中创建关联表,现在创建一张hbase中没有的表试试看

create table "teacher" (
empid varchar primary key,
"name"."firstname" varchar,
"name"."lastname"varchar,
"age"."big"  varchar,
"age"."small" varchar
)column_encoded_bytes=0;

在这里插入图片描述
在这里插入图片描述
在phoenix里面创建了一张新表,那么hbase中也会出现一张一样的表
因此在phoenix里面创建表的时候可以根据需要对Hbase表结构进行一些设置

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-12-04 13:30:42  更:2021-12-04 13:32:23 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 10:25:19-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码