数据科学 | Apache Hive入门
点击蓝字
关注我们
导语
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/
相关文章