类SQL --- HIVE

2021/4/14 2:26:59

本文主要是介绍类SQL --- HIVE,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

前言

:是基于 Hadoop 的一个数据仓库工具。

HIVE

hive概述

: Hive 是基于 Hadoop 的一个数据仓库工具。可以将结构化的数据文件映射为一张表,并提供完整的 类sql 查询语句转化为 MapReduce 任务进行运行。

优点

: 学习成本低,可以通过 类SQL语句 快速实现 MapReduce 统计,不必开发专门的 MapReduce 应用,十分适合数据仓库的统计分析。

功能

:Hive 是建立在 Hadoop 上的数据仓库基础构架,他提供了一系列的工具,可以用来进行数据提取,转化,加载。也可以叫做数据清洗。这是一种可以存储,查询和分析存储在 Hadoop 中的大规模数据的机制,Hive定义了简单的 类SQL 查询语言,称为 HiveQL。它允许熟悉 SQL 的用户查询数据。

运行机制

: HQL - Hive 通过类 SQL 的语法。来进行分布式的计算。HQL 用起来和 SQL 非常的类似,Hive 在执行的过程中会将 HQL 转换为 MapReduce 去执行,所以 Hive 其实是基于 Hadoop 的一种分布式计算框架,底层仍然是 MapReduce,所以它本质还是一种 离线大数据 分析工具。

Hive 命令

: show databases;
						  - - >  查看所有的数据库

: create database 自定义数据库名;
							 - - >  创建数据库;

: use 自定义的数据库;
							- - >  进入 自定义的数据库 

: show tables;
							 - - >    查看数据库下所有表

: create table 自定义表名 (id int,name string);
							- - >  创建表

: insert into 自定义数据表 values(1,'zhang');
							- - >  插入数据表

: select * from stu;
							 - - > 查看表数据

: drop table 自定义的表名
							 - - > 删除表

: load data local inpath '上传文件所在路径'  into table 表名; - - > 将本地文件传到表中 

: create table 自定义表名1(id int,name string) row
						 format delimited fields terminated by ' '; 
			(       row 行
					format 格式  
				    delimited 以  ......  为规定  
				    fields  区域
				    terminated  停止 结束
				    )		 
				 	   - - > 创建表名 并且以 空格 为分隔符;
						               
: desc 自定义表名 
						 - - > 查看表结构

: create table 自定义表名2 like 自定义表名1
							- - > 创建一张 表2 和 表1 的结构类似 

: insert overwrite table 自定义表名2 select * from 自定义表名1 
							- - > 将从自定义表名1 中的查询到的数据存储到 自定义表名2 中。
							
: alter table 自定义表名1 rename to 自定义表名2;
						    - - > 将自定义表名1 的名字 更改成自定义表名 2

: alter table 自定义表名1 add columns (age int);
						   - - > 为表 自定义表名1 添加一个字段
								 
: exit - - > 退出hive

Hive内部表和外部表

MANAGED_TABLE 内部表

: 先有hive表,再有数据
: 当内部表被删除时,对应的HDFS的数据也会备删除掉

EXTERNAL_TABLE 外部表

: 现有数据,在建立hive表
: 删除外部表,但对应的数据还在
: 外部表管理的是 HDFS 里的某一个目录的文件数据

创建外部表的命令

:create external table 自定义表名(id int,name string)row
                format delimited fields terminated by ' ' location '/目录路径'

Hive分区表

: Hive的表的有两种,内部表和外部表都可以是分区表;

作用

: 可以避免查询整表,在生产环境下,基本都是建立带有分区字段的表;

创建命令

  create table 自定义表名(id int,name string)partitioned by 
               (category string)row format delimited fields terminated by '\t';
		
		注意: 在创建分区表时,partitioned字段可以不在字段列表中,
		      生成的表中自动就会具有该字段,category是自定义的字段;

分区表加载数据命令

: load data local inpath ‘/文件所在路径’ overwrite into table 表名 partition (category=‘分区文件名’);

查询数据命令

select * from 表名 where category=‘分区表名’;只查询分区的数据

创建目录来增加分区

: 在自己的 HDFS 的目录下,自己创建一个分区目录,然后再此目录下上传文件;

ALTER TABLE 表名 add PARTITION (category = '自己创建的名字')
                                    location ‘/文件所在路径’;	

显示分区

					show partitions iteblog;

添加分区

alter table 自定义表名 add partition (category='分区表名')
           location '分区路径' ;

或者   msck repair table 自定义表名;

修改分区

alter table 自定义表名 partition(category='分区原名字') 
			rename to partition (category='分区新名字');

数据类型

常用的基本数据类型

: int boolean float double string

复杂数据类型

: array 是由一系列相同数据类型的元素组成

: map 包含 key-value 键值对,可以通过 key 来访问元素

: struct 可以包含不同数据类型元素,相当于对象结构,可以通过 对象.属性 来访问

Hive 常用字符串操作函数

: length(String A)	- - >  select length(返回A的长度);

: reverse(string A)     - - >  select reverse(返回A的反转结果);

: concat('string A','string B') - - > select concat(返回 AB);

:  concat_ws('分隔符','string A','string B') - - > select concat_ws(返回 A分隔符B);

:  substr('需要分割的字段','开始分割的位置','结束分割位置');
                                                  - - > select substr(中间的部分);

:  upeer(string a)或者 ucase(string a) - -> 转大写

:  lower(string a)或者 lcase (string a)--> 转小写

:  split(string str,string pat) - - > select split('需要分割的数字',);

:  explode - - > 将行数据,按指定规则切分出多行

Hive 的 UDF

: 如果 hive 的内置函数不够用,我们也可以自己定义函数来使用,这样的函数称为 hive 的用户自定义函数,简称 UDF;



这篇关于类SQL --- HIVE的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程