首页 > 其他 > 详细

Hive的基本概念和常用命令

时间:2020-03-20 00:34:07      阅读:75      评论:0      收藏:0      [点我收藏+]

原文链接:

https://www.toutiao.com/i6766571623727235595/?group_id=6766571623727235595

一、概念:

1、结构化和非结构化数据

结构化数据:固有的键值对

非结构数据:没有固定的键值对,没有明确的映射关系

所以就可以理解下面这句话:hive是由facebook开源用于解决海量结构化日志的数据统计项目。

2、Hive是基于Hadoop文件系统上的数据仓库架构,它为数据仓库的管理提供了许多功能:数据ETL(抽取、转换和加载)、数据存储管理和大型数据集的查询和分析能力。

RDBMS(关系型数据库)

OLTP(联机事务处理过程):一组事务同时去执行,低延迟,查询为主。

ACID(原子性、一致性、隔离性、持久性)

OLAP(联机分析处理过程):以数据仓库为基础,高延迟,分析为主。

3、Hive定义了类SQL语言-Hive QL(HQL),允许用户进行和SQL相似的操作,它可以将结构化的数据文件映射为一张数据表,并提供简单的SQL查询功能,同时允许开发人员方便的使用MR操作,可以将SQL语言转换为MR任务运行。

二、官网:

 

三、ETL

E:Extract 数据抽取

T:Transform 数据转换

L:Load数据装载

ETL是将业务系统的数据经过抽取、清洗转换之后,装载到数据仓库的过程。目的是将分散、零乱、标准不统一的数据整合到一起。例如项目日志信息、数据爬虫信息等。就可以提供决策分析依据了。

数据抽取:把不同的数据源数据抓取过来,存到某个地方。

数据清洗:过滤哪些不符合要求的数据或修正数据之后再进行抽取。不完整数据:比如信息缺失。错误数据:日期格式不正确、日期越界、字符串出现空格等重复数据:需要去重等

数据转换:不一致的数据进行转换,比如一个职工有职工号和人事号,学生有身份证号和学号等

常见ETL工具:Oracle的OWB、SQL Server的DTS、SSIS服务、Informatic等等,工具可以快速建立起ETL工程,屏蔽了复杂的编码任务、提高了速度,降低了难度,但是缺少灵活性。

SQL方法优点是灵活,提高了ETL效率,但是编码复杂,对技术要求高。

Hive结合了前面两种的优点。

四、安装Hive

可参考之前安装Hive的文档教程《CentOS6.5-Hadoop2.7.3安装hive-2.1.1》。

也可以进入官网参考

找到Getting Started Guide

 

选择Running Hive

 

 

五、常用命令

安装完成后我们进入hive

 

在官网上有命令使用的文档

 

文档内容

 

我们使用一些命令:

查看数据库show databases;

 

创建数据库show database 库名

 

可以查看HDFS上

 

使用数据库use 库名

 

创建表的数据类型,我们可以查看官网

 

就可以找到所有的数据类型了

 

创建表的时候,如果字段是关键字,则需要加反飘号`(Tab键上面)。

那关键字有哪些?

 

比如

 

报错

FAILED: ParseException line 2:0 Failed to recognize predicate ‘date‘. Failed rule: ‘identifier‘ in column specification

 

所以我们改为:

 

但是我们依然不建议使用关键字,尽量去避免,不要使用。我们修改下字段名

 

 

这其中有两个小细节:第一CTRL+L清屏 第二从记事本复制表语句的时候前面不要有空格,否则会报错,Display all 528 possibilities? (y or n)。

我们再看数据加载

 

我们尽量不要使用insert、update、delete,我们可以使用load,所以我们点击load

 

LOAD DATA [LOCAL] INPATH ‘filepath‘ [OVERWRITE] INTO TABLE tablename [PARTITION (partcol1=val1, partcol2=val2 ...)]

如果加Local表示Linux本地的数据文件

如果不加Local,表示HDFS上的数据文件

我们在Linux上准备一个数据文件

 

我们先加载数据

load data local inpath ‘/data/hivetest/stu_info_local‘ into table gjz_error;

 

我们查看数据,数据全部是NULL,因为hive默认的分隔符是^A,也就是001,而我们的分隔符是一个tab键。

 

我们把分隔符改为^A(先按Ctrl+V,再按Ctrl+A)

 

然后我们重新导入数据,发现数据已经导入了

 

 

我们再将数据文件上传到HDFS上

 

 

创建数据表

 

 

我们导入数据

 

 

此时我们查看HDFS上,发现原来的数据也不在了

 

但是数据已经加载到hive了

 

另外数据文件已经在新的目录下了

 

所以不加local是剪切移动的过程,而加local是复制的过程。

前面的问题:如果我们的数据不是默认的分隔符,即不是^A该怎么办呢?

我们准备文件

 

准备数据,将数据分隔符改为\t

 

我们看官网上这个部分

 

我们重新建表,加入数据

create table hive_table_local_format(

id int,

name string

)row format delimited fields terminated by ‘\t‘

 

Hive在HDFS文件系统上的结构

我们在test库下面创建表

 

导入数据

 

我们查看

/user/hive/warehouse/test.db/hive_table_local_format

 

我们可以得到

 

元数据库开始是derby,只能开启一个客户端,再开启一个会话启动会报错,所以我们改变了元数据库为Mysql,其中可选的是:

 

我们创建一个数据库

create database stu_test

 

使用数据库并创建表

 

我们准备一个数据文件

 

将文件上传到HDFS上

我们先创建两个目录

 

我们把数据上传

 

 

 

我们加载数据到hive中

在加载之前我们可以看到,我们看到stu_test中没有数据

 

我们加载数据

 

 

我们再加载第二个数据

 

 

注:我们会发现,自动重命名了。

我们查看我们表的信息:

(1)   show create table

(2)   desc [extended][formatted] table

(3)   元数据库

 

或者

 

或者

 

或者

 

我们查看Tals

 

修改表名

官网

 

 

我们修改一个表试一下

 

给表添加一个列

 

 

alter table table_name add columns (age int);

 

添加注释也在这个部分

 

清除数据

Truncate table table_name

 

注意不会删除元数据

 

Hive的日志文件配置文件

 

目录修改为hive.log.dir=/opt/bigdata/hive/logs

 

我们可以在hive-site.xml.template找到下面两个属性,这两个属性可以帮助我们在日志中显示数据和列名,将属性添加到hive-site.xml中

<property>

    <name>hive.cli.print.current.db</name>

    <value>false</value>

    <description>Whether to include the current database in the Hive prompt.</description>

</property>

<property>

    <name>hive.cli.print.header</name>

    <value>false</value>

    <description>Whether to print the names of the columns in query output.</description>

</property>

 

我们添加到配置中,下次重启进入就可以看到日志了

 

一些常用的命令

官网的位置

 

就可以看到命令了

 

比如:

quit exit 退出客户端

set 临时设置属性 可以参考Mysql中设置编码等方式去理解。另外set也可以用户查看参数的属性。

 

显示所有函数show functions;

 

我们可以查询函数的使用比如max

Desc function max;

 

Desc function extended case;

 

Hive可以用java写成函数,使用add jar就可以添加使用

 

也可以将python脚本添加进来,使用add file

 

!感叹号的方式可以查看Linux上的文件

 

dfs方式可以查看HDFS上的文件

 

Hive的基本概念和常用命令

原文:https://www.cnblogs.com/bqwzy/p/12528585.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!