ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

类SQL --- HIVE

2021-04-13 21:01:41  阅读:123  来源: 互联网

标签:string 自定义 SQL HIVE --- Hive 表名 table select


前言

:是基于 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;

标签:string,自定义,SQL,HIVE,---,Hive,表名,table,select
来源: https://blog.51cto.com/u_15165233/2704082

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有