数据科学 | Apache Hive入门

2022-04-11 00:00:00 查询 数据 数据库 执行 名称

点击蓝字

关注我们

导语


上一期讲了Hadoop生态,这一次来跟大家聊聊Hadoop生态中的hive,一个分布式数据仓库系统,它允许轻松读取、写入和管理HDFS上的文件。它具有自己的查询语句(Hive查询语句HQL),与SQL非常相似。我们只需要编写类似SQL的命令,并且在Hive的后端自动将它们转换为map-reduce作业。

在本文中,我们将看到配置单元的架构及其工作方式。我们还将学习如何执行简单的操作,例如创建数据库和表,加载数据,修改表。

Hive是什么

大多数数据科学家使用SQL查询来探索数据。现在,随着海量数据的到来,我们需要新的专用工具来处理大量数据,Hive顺应时代而生。


简单来说,Hive就是在Hadoop上架了一层SQL接口,可以将SQL翻译成MapReduce去Hadoop上执行,这样使得数据开发和分析人员很方便地使用SQL来完成海量数据统计与分析。

Hive是如何工作的

1. 首先,我们使用配置单元的Web界面或命令行界面记录查询。它将其发送给驱动程序以执行查询。

2. 在下一步中,驱动程序将接收到的查询发送到编译器,由编译器在其中验证语法。

3. 语法验证完成后,它将从元存储请求元数据。

4. 现在,元数据提供了诸如数据库,表,列的数据类型之类的信息,以响应返回给编译器的查询。

5. 编译器再次检查从元存储接收到的所有需求,并将执行计划发送给驱动程序。

6. 现在,驱动程序将执行计划发送到HiveQL流程引擎,在该引擎中,引擎将查询转换为map-reduce作业。

7. 将查询转换为map-reduce作业后,它将任务信息发送到Hadoop,在该处开始查询的处理,同时它更新元存储中有关map-reduce作业的元数据。

8. 处理完成后,执行引擎将接收查询结果。

9. 执行引擎将结果传送回驱动程序,后将驱动程序发送到hive用户界面,从那里我们可以看到结果。


另外,Apache Hive中的数据类型可分为以下5个不同的类别:

数值类型:TINYINT,SMALLINT,INT,BIGINT

日期/时间类型:TIMESTAMP,DATE,INTERVAL

字符串类型:STRING,VARCHAR,CHAR

复杂类型:STRUCT,MAP,UNION,ARRAY

杂项类型:BOOLEAN,BINAR

如何进行一些简单操作

有关数据库的操作基本包括创建和删除数据库、建立表格、修改表等,下面我们来详细聊聊~

输入标题

创建和删除数据库

创建和删除数据库非常简单,它类似于SQL。我们需要为配置单元中的每个数据库分配一个的名称。

CREATE DATABASE <<数据库名称>>;


删除数据库也非常简单。如果您尝试删除不存在的数据库,它将给出SemanticException错误。

DROP DATABASE <<数据库名称>>;


创建和删除数据库

我们使用create table语句创建一个表,完整语法如下。

CREATE TABLE IF NOT EXISTS <<数据库名称>><<表名称>>                           (column_name_1 data_type_1,                            column_name_2 data_type_2,                            .                            .                            column_name_n data_type_n)                            ROW FORMAT DELIMITED FIELDS                            TERMINATED BY '\t'                            LINES TERMINATED BY '\n'                            STORED AS TEXTFILE;

对于大数据,大多数时候我们都是从外部文件导入数据,因此在这里我们可以预定义文件中使用的定界符、行终止符,还可以定义存储表的方式。


数据加载到表

假设数据表已经创建。现在是时候将数据加载到其中了。我们可以使用以下语法从系统上任何本地文件加载数据。


LOAD DATA LOCAL INPATH <<本地系统上的文件路径>>  INTO TABLE<<数据库名称>> <<表名称>>;


当我们处理大量数据时,某些行中可能会有不匹配的数据类型。在这种情况下,配置单元将不会引发任何错误,而是会填充空值来代替它们。这是非常有用的功能,因为将大数据文件加载到配置单元中是一个昂贵的过程,并且我们不希望仅由于文件很少而加载整个数据集。

修改数据表

在配置单元中,我们可以对现有表进行多种修改,例如重命名表,向表中添加更多列。更改表的命令与SQL命令非常相似。

重命名表的语法


ALTER TABLE << 表名称>> RENAME TO << 新表名称>>;



那它有什么优点呢

1.)可扩展

Hive可以自由的扩展集群的规模,可以使用它来处理任何大小的数据,一般情况下不需要重启服务。

2.)延展性

Hive支持用户自定义函数,用户可以根据自己的需求来实现自己的函数。

3.)容错

良好的容错性,节点出现问题SQL仍可完成执行。

参考链接:

https://www.analyticsvidhya.com/blog/2020/10/getting-started-with-apache-hive/


本文作者

指导老师介绍




相关文章