hive实战使用文档(一)之hive on hbase知多少

这篇具有很好参考价值的文章主要介绍了hive实战使用文档(一)之hive on hbase知多少。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

hive对库表的常用命令

查看数据库 :

show database;

切换数据库:

use database_name;

查看所有的表:

show tables;

查询表结构:

desc table_name;

创建数据库:

create database database_name;

删除数据库

drop database if exists database_name;
drop database database_name;

创建表

create table if not exists table_name(
    field1 type1,
    field2 type2,
    field3 type3,
    ……
)comment "学生信息表"
row format delimited
fields terminated by "\t"

删除表

drop table table_name

创建视图

create view view_name as
select * from table_name where field1 > condition

创建外部表

create external table if not exists `db_name`.`table_name`(
        `col_name1` type comment "",
        `col_name2` type comment ""
)

partitioned by(data string)
row format delimited fields terminated by ",";

建表语句标准化

create view if not exists `db_name`.`table_name`(
        `col_name1` type comment "",
        `col_name2` type comment ""
)

create table student(
    name string,
    age int
);

查看 show create table student

CREATE TABLE `student`(
  `name` string, 
  `age` int)
ROW FORMAT SERDE 
  'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe' 
STORED AS INPUTFORMAT 
  'org.apache.hadoop.mapred.TextInputFormat' 
OUTPUTFORMAT 
  'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION
  'hdfs://yunqidt:9000/yunqi/hive/warehouse/ods.db/student'
TBLPROPERTIES (
  'COLUMN_STATS_ACCURATE'='true', 
  'numFiles'='1', 
  'numRows'='1', 
  'rawDataSize'='5', 
  'totalSize'='6', 
  'transient_lastDdlTime'='1591778652')

hive on hbase建表方式及说明

方式一:hive内部映射hbase

建表方式两种(已测):
1、创建内部表

创建时,指定hbase表名不能在hbase中提前创建,或已存在也不行

create table `dws`.`student`(
`id` string,
`name` string,
`age` int
)
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES ("hbase.columns.mapping" =":key,
info:name,
info:age"
)
TBLPROPERTIES("[hbase.table.name](http://hbase.table.name/)" = "dws:student");

create table `dws`.`tmp_dws_rkfb_info_jtgxxx_z`(
`id` string,
`xb` string,
`xm` string,
`zjlx` string,
`zjhm` string,
`ryzt` string,
`dxxm` string,
`dxzjlx` string,
`dxzjhm` string,
`dxzt` string,
`jtgx` string,
`data_begin_date` date,
`data_end_date` date
)
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES ("hbase.columns.mapping" =":key,
info:name,
info:age"
)
TBLPROPERTIES("[hbase.table.name](http://hbase.table.name/)" = "dws:tmp_dws_rkfb_info_jtgxxx_z");

全量插入数据

insert into table tmp_dws_rkfb_info_jtgxxx_z select * from dws_rkfb_info_jtgxxx_z;

分区插入数据

insert into table tmp_dws_rkfb_info_jtgxxx_z select * from dws_rkfb_info_jtgxxx_z where 分区名称="指定分区";

2、创建外部表
提前在hbase中创建表

create 'classes','user'

创建外部Hive表

create external table student(id int, name string, age int)
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,
user:name,
user:age"
)
TBLPROPERTIES("[hbase.table.name](http://hbase.table.name/)" = "student");

hive外部表数据存在hbase中
hive内部表数据存在hbase中

注意事项(已测):

当hive表与hbase建立映射关系,数据都存在hbase中,与hive表是内部表还是外部表无关
当删除hbase中关联表数据时,查询hive表数据则会报错,提示hbase表不存在
当删除hive中关联表时
如果hive表是外部表,则hbase相关表和数据还在
如果hive表是内部表,则hbase相关表和数据一并删除
如果hive外部表误删,重新与hbase表建立映射关系即可

说明:
1、适用于数据量不是特别大的场景
2、映射方式
2.1 创建hive内部表
2.2 stored by 指定数据的存储方式
2.3 SERDEPROPERTIES:表示字段映射,对应hive中的表字段的顺序,
需要注意的是 :key指的是Hbase中的rowdy,hive表中要有一个key字段与之对应,
否则会报错的。
2.4 TBLPROPERTIES:表示表名映射,指定需要映射的Hbase表名
3、映射规则
3.1 hbase中的空cell在hive中会补null
3.2 hive和hbase中不匹配的字段会补null
3.3 Bytes类型的数据,建hive表示加#b
3.4 hive内部表的数据,由hive自己管理,因此删除hive表,则对应的Hbase表也会被删除
4、hive与hbase建立映射关系

方式二:
hfile文件导入,对文件格式有要求

说明:
适用于数据量较大的场景
步骤:
1、启动hive,添加需要的jar包

add jar /lib/hive-hbase-handler-2.3.3.jar;
add jar /lib/hbase-protocol-1.1.1.jar;
add jar /lib/hbase-common-1.1.1.jar;
add jar /lib/hbase-client-1.1.1.jar;
add jar /lib/hbase-server-1.1.1.jar;

2、创建hive表

此处建表时需要注意,输出格式一定要为:HiveHFileOutputFormat。
/user/hive-hbase/info是生成的hfile在HDFS上的路径,其中info为Hbase的family。
可以向hive表中插入数据,然后查看HDFS的该目录下是否有文件
hdfs dfs -ls /user/hive-hbase/info

create table student{
name string comment '名字',
age int comment'年龄'
}
STORED AS
INPUTFORMAT 'org.apache.hadoop.mapred.TextInputFormat'
OUTPUTFORMAT 'org.apache.hadoop.hive.hbase.HiveHFileOutputFormat'
TBLPROPERTIES ('hfile.family.path' = '/user/hive-hbase/info');

此处建表时需要注意,输出格式一定要为:HiveHFileOutputFormat。
/user/hive-hbase/info是生成的hfile在HDFS上的路径,其中info为Hbase的family。
可以向hive表中插入数据,然后查看HDFS的该目录下是否有文件文章来源地址https://www.toymoban.com/news/detail-514882.html

hdfs dfs -ls /user/hive-hbase/info

hive常用函数

1、over()开窗范围:rows是行数的意思,后面跟的是函数的范围,between是行数在什么范围,unbounded是行数的起点,这里可以将unbounded替换成1,那就是相邻上一个月的意思,preceding是前面的意思,current row是当前行的意思
2、cast(数据类型1 as 数据类型2)表示将数据类型1强转成数据类型2
3、decimal(10,2)是整数位长度为10,小数位长度为2,如果没有小数位,默认补0
4、row_number:添加序号,无论字段值是否相同
5、dense_rank():基于over开窗函数的排序函数,如果值相同,则排序的序号相同,紧接的序号不跳过。举例123,1123,1223这样6、6、date_sub(日期,数值),用日期-数值,即当前日期的前n天,返回值是日期字符串类型
7、ntile:把有序的数据集合平均分配到指定的数据量个桶中,将桶号分配给每一行。如果不能平均分配,则优先分配较小编号的桶,并且各个桶中能放的行数最多相差1。
8、split(字符串,分割符):使用分割符切割字符串,返回一个数组
9、lateral view explode(数组):将数组字段拆分成多行
10、concat_ws(连接符,字符串,字符串):连接多个字符串
11、collect_list(分组键):将分组中的某列聚合成一个数组,数组中元素与分组后的数据保持一致
12、map:将多个排列好的k,v,k,v...变成一个map结构,这是初始化map结构的方式,取数据是map[key]
13、row_number():row_number是基于over()开窗函数的一个不重复的序号,如上结果所示,即便结果相同,也会顺延,序号自增
14、substring(字符串,起始位置,步长):根据起始位置和步长切割字符串
15、nvl(value1,value2):如果value1是null,则返回value2,如果不是,则返回value1
16、lag(字段,n,默认值):基于over开窗函数,根据排序规则取当前行前第n个数,如果不指定n,则默认取前一个,如果取不到,返回默认值,如果不指定默认值,取不到则返回Null

到了这里,关于hive实战使用文档(一)之hive on hbase知多少的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Hbase 王者荣耀数据表 HBase常用Shell命令

     大数据课本:    HBase常用Shell命令 在使用具体的Shell命令操作HBase数据之前,需要首先启动Hadoop,然后再启动HBase,并且启动HBase Shell,进入Shell命令提示符状态,具体命令如下: 1 在HBase中创建表 假设这里要创建一个表student,该表包含 Sname 、 Ssex 、 Sage 、 Sdept 、 course 等字

    2024年04月22日
    浏览(38)
  • Hive基本操作-增删改查和修改库表

    创建数据库 查看数据库 修改数据库属性 删除数据库 新增表 外部表和内部表最大的一个区别是,内部表在删除表的时候,数据会一起被删除,它存储在所属数据库子目录下; 外部表再删除表的时候数据不会被删除,所以外部表更加安全,在工作中也更加常用,存储在指定的

    2024年02月11日
    浏览(36)
  • cmd 108个常用命令,看看你知道多少

    一、CMD是什么 在不同的操作系统环境下,命令提示符各不相同,在 Windows 环境下,命令行程序为 cmd.exe ,是一个 32 位 的命令行程序。 cmd 是指命令提示符,是在操作系统中,提示进行命令输入的一种工作提示符。 cmd 是 command 的缩写,即命令行 。 cmd 是微软 Windows 系统的命令

    2024年04月29日
    浏览(40)
  • 【Trino实战】Hive connector功能性文档

    Trino需要使用Hive下的 元数据服务(HMS)和对象存储系统(HDFS),协调器和所有的工作机需要和他们是保证网络畅通。 该连接器提供对配置的对象存储系统和元数据存储中的数据和元数据的读取访问和写入访问: 全局可用语句 读操作 写操作 安全操作 事务 基础使用案例 创建内

    2024年02月07日
    浏览(46)
  • hive常用命令记录

    不支持delete column操作,可以使用replace columns实现字段删除操作; 删除column_C 取yyyy-MM-dd HH:mm:ss格式日期串的yyyy-MM-dd部分,使用字符串SUBSTR函数; 假设现在有如下数据(表 score ) 姓名 科目 成绩 晓明 语文 100 晓明 数学 100 晓明 英语 100 小红 语文 100 小红 数学 100 小红 英语

    2024年02月07日
    浏览(49)
  • hive常用的授权命令

    创建角色 create role role_name; 例子:create role abc_read_role; 删除角色 drop role role_name; 例子:drop role abc_read_role; 显示所有角色 show roles; 把整个库授权给某一个角色查询权限(给所有权限,把select 替换成all) grant select on database dbname_db to role_name; 例子:grant select on database abc_db to abc_r

    2024年02月05日
    浏览(40)
  • Linux中操作Hive常用命令

    比如: 注意:如果存在表会删除失败。 解决这个失败问题有2个方法: 第1个方法:先删除对应库的所有表,再删除库。 第2个方法:使用cascade执行强制删库。drop database if exists 数据库名称 cascade; 比如: 比如: 比如: 比如: 比如:

    2024年02月16日
    浏览(37)
  • 【FFmpeg】ffmpeg 命令行参数 ⑦ ( 使用 FFmpeg 提取 PCM 音频数据 | PCM 音频格式 | 提取 PCM 音频格式常用参数 | 查询文档方法 )

    PCM 全称 \\\" Pulse Code Modulation \\\" , 脉冲编码调制 , 该 音频数据 是未经压缩的 采样裸数据 , 只有 知道该数据的 采样率 / 采样位数 / 通道数 才能将该音频数据播放出来 ; PCM 数据是 最原始的音频数据 , 音频内容完全无损 , 但是 PCM 数据体积庞大 , 对 PCM 音频数据压缩 分为 无损压缩

    2024年04月11日
    浏览(50)
  • 【MongoDB】数据库、集合、文档常用CRUD命令

    目录 一、数据库操作 1、创建数据库操作 2、查看当前有哪些数据库 3、查看当前在使用哪个数据库 4、删除数据库 二、集合操作 1、查看有哪些集合 2、删除集合 3、创建集合 三、文档基本操作 1、插入数据 2、查询数据 3、删除数据 4、修改数据 四、文档分页查询 五、文档其

    2024年02月13日
    浏览(44)
  • Hbase-技术文档-spring-boot整合使用hbase--简单操作增删改查--提供封装高可用的模版类

    使用spring-boot项目来整合使用hbase。 依赖声明表示将把Apache HBase客户端库的2.4.3版本添加到项目中。HBase是一个分布式、可扩展的大数据存储系统,它基于Google的Bigtable模型,并使用了Hadoop分布式文件系统作为底层存储。HBase客户端库是用于与HBase数据库进行交互的工具库,提供

    2024年02月07日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包