百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 热门文章 > 正文

Apache Hive简介

bigegpt 2024-08-16 14:26 3 浏览

Hive和SQL编码新手指南


Apache Hive通常被称为建立在Apache Hadoop之上的数据仓库基础架构。 最初由Facebook开发,每天查询大约20TB的数据,目前,程序员可使用它对存储在文件系统(例如HDFS(Hadoop分布式框架系统))中的大型数据集进行临时查询和分析,而无需了解地图的详细信息 -减少。 Hive最好的部分是Hive引擎将查询隐式转换为有效的链映射减少任务。

Hive的功能:

· 支持不同的存储类型,例如纯文本,csv,Apache Hbase等

· 数据建模,例如创建数据库,表等

· 易于编码; 使用称为HiveQL的类似SQL的查询语言

· ETL功能,例如将数据提取,转换和将数据加载到与联接,分区等结合在一起的表中。

· 包含内置的用户定义函数(UDF)以操纵日期,字符串和其他数据挖掘工具

· 无论布局如何,非结构化数据均以数据形式显示为表格

· 自定义映射器,Reducer和UDF的插件功能

· Hadoop上的增强查询

Hive的用例:

· 文本挖掘-使用map-reduce覆盖和分析具有方便结构的非结构化数据

· 文档索引编制—将标签分配给多个文档,以便于恢复

· 业务查询-查询大量历史数据以获得可行的见解,例如 交易记录,付款记录,客户数据库等

· 日志处理-处理各种类型的日志文件,例如呼叫日志,Web日志,机器日志等。

Hive中的编码

我们将使用一个称为"事务"的表来查看如何在Hive中查询数据。 交易表包含属性ID,项目和销售。

这是任何编程语言的一些最佳编码实践。

Hive中的DDL命令

DDL是数据定义语言(Data Definition Language)的简称,它处理数据库模式和描述,以及如何将数据保留在数据库中。 一些常见的例子是

建立表格

· 创建表-CREATE TABLE transaction(id INT, item STRING, sales FLOAT);

· 对表进行分区- CREATE TABLE transaction(id INT, item STRING, sales FLOAT) ROW FORMAT DELIMITED FIELDS TERMINATED BY ‘\001’ STORED AS TEXTFILE LOCATION <HDFS path name>;

删除表格

· DROP TABLE transaction;

修改表

· ALTER TABLE transaction RENAME TO transaction_front_of_stores;

· 添加列— ALTER TABLE transaction ADD COLUMNS (customer_name STRING);

显示表

· SHOW TABLES;

描述表

· DESCRIBE transaction;

· DESCRIBE EXTENDED transaction;

HIVE中的DML命令

DML是处理数据操作的数据操作语言的简称,包括最常用的SQL语句,例如SELECT,INSERT,UPDATE,DELETE等。它主要用于存储,修改,检索,删除和更新数据。 数据库。

加载数据中

· 从外部文件加载数据— LOAD DATA LOCAL INPATH “<file_path>” [OVERWRITE] INTO TABLE <table name>;

· LOAD DATA LOCAL INPATH “/documents/datasets/transcation.csv” [OVERWRITE] INTO TABLE transaction;

· 从单独的表写入数据集-INSERT OVERWRITE TABLE transaction SELECT id, item, date, volume FROM transaction_updated;

选择声明

select语句用于从数据库表中获取数据。 主要用于查看记录,选择所需的字段元素,获取不同的值以及显示来自任何过滤器,限制或按操作分组的结果。

要从事务表中获取所有记录:

SELECT * FROM Transaction;

要从交易表中获取不同的交易ID:

SELECT DISTINCT ID FROM Transaction;

限制声明

与Select语句一起使用以限制编码器要查看的行数。 任何交易数据库都包含大量数据,这意味着选择每一行都将导致更长的处理时间。

SELECT * FROM transaction LIMIT 10;

过滤条件

SELECT * FROM transaction WHERE sales>100;

按声明分组

分组依据语句用于汇总不同级别的数据。 想一想我们要按项目计算总销售额的情况。

SELECT item, SUM(sales) as sale FROM transaction GROUP BY item;

如果我们想过滤掉所有销售额至少达到1000的商品怎么办?

SELECT item, SUM(sales) as sale FROM transaction GROUP BY item HAVING sale>1000;

Jion Hive

为了合并和检索来自多个表的记录,我们使用了Hive Join。 当前,Hive支持两个或更多表的内部,外部,左和右联接。 语法类似于我们在SQL中使用的语法。 在研究语法之前,让我们了解不同的联接如何工作。

SELECT A.* FROM transaction A {LEFT|RIGHT|FULL} JOIN transaction_date B ON (A.ID=B.ID);

笔记:

· Hive不支持IN / EXISTS子查询

· Hive不支持不包含相等条件的联接条件

· 可以联接多个表,但可以组织表,以使最大的表出现在序列的最后

在Hive中优化查询

要优化配置单元中的查询,这是您应该知道的5条经验法则

· 分组依据,聚合功能和联接默认情况下在化简器中进行,而过滤器操作在映射器中进行

· 使用hive.map.aggr = true选项直接在地图任务中执行第一级聚合

· 根据执行的任务类型设置映射器/还原器的数量。 对于过滤条件,请使用set mapred.mapper.tasks = X;。 对于聚合操作:设置mapred.reduce.tasks = Y;

· 在联接中,序列中的最后一个表通过简化器流式传输,而其他表则被缓冲。 整理表格,使最大的表格出现在序列的最后

· 可以使用STREAM TABLE和MAP JOINS加快连接任务的速度


本文重点介绍Hive,它的功能,用例和Hive查询。 由于许多DML和DDL查询与SQL非常相似,因此它可以充当SQL新手的基础或构建块。


(本文翻译自Angel Das的文章《Introduction to Hive》,参考:https://towardsdatascience.com/introduction-to-hive-859ba31a5769)

相关推荐

了解Linux目录,那你就了解了一半的Linux系统

大到公司或者社群再小到个人要利用Linux来开发产品的人实在是多如牛毛,每个人都用自己的标准来配置文件或者设置目录,那么未来的Linux则就是一团乱麻,也对管理造成许多麻烦。后来,就有所谓的FHS(F...

Linux命令,这些操作要注意!(linux命令?)

刚玩Linux的人总觉得自己在演黑客电影,直到手滑输错命令把公司服务器删库,这才发现命令行根本不是随便乱用的,而是“生死簿”。今天直接上干货,告诉你哪些命令用好了封神!喜欢的一键三连,谢谢观众老爷!!...

Linux 命令速查手册:这 30 个高频指令,拯救 90% 的运维小白!

在Linux系统的世界里,命令行是强大的武器。对于运维小白而言,掌握一些高频使用的Linux命令,能极大提升工作效率,轻松应对各种系统管理任务。今天,就为大家奉上精心整理的30个Linu...

linux必学的60个命令(linux必学的20个命令)

以下是Linux必学的20个基础命令:1.cd:切换目录2.ls:列出文件和目录3.mkdir:创建目录4.rm:删除文件或目录5.cp:复制文件或目录6.mv:移动/重命名文件或目录7....

提高工作效率的--Linux常用命令,能够决解95%以上的问题

点击上方关注,第一时间接受干货转发,点赞,收藏,不如一次关注评论区第一条注意查看回复:Linux命令获取linux常用命令大全pdf+Linux命令行大全pdf为什么要学习Linux命令?1、因为Li...

15 个实用 Linux 命令(linux命令用法及举例)

Linux命令行是系统管理员、开发者和技术爱好者的强大工具。掌握实用命令不仅能提高效率,还能解锁Linux系统的无限潜力,本文将深入介绍15个实用Linux命令。ls-列出目录内容l...

Linux 常用命令集合(linux常用命令全集)

系统信息arch显示机器的处理器架构(1)uname-m显示机器的处理器架构(2)uname-r显示正在使用的内核版本dmidecode-q显示硬件系统部件-(SMBIOS/DM...

Linux的常用命令就是记不住,怎么办?

1.帮助命令1.1help命令#语法格式:命令--help#作用:查看某个命令的帮助信息#示例:#ls--help查看ls命令的帮助信息#netst...

Linux常用文件操作命令(linux常用文件操作命令有哪些)

ls命令在Linux维护工作中,经常使用ls这个命令,这是最基本的命令,来写几条常用的ls命令。先来查看一下使用的ls版本#ls--versionls(GNUcoreutils)8.4...

Linux 常用命令(linux常用命令)

日志排查类操作命令查看日志cat/var/log/messages、tail-fxxx.log搜索关键词grep"error"xxx.log多条件过滤`grep-E&#...

简单粗暴收藏版:Linux常用命令大汇总

号主:老杨丨11年资深网络工程师,更多网工提升干货,请关注公众号:网络工程师俱乐部下午好,我的网工朋友在Linux系统中,命令行界面(CLI)是管理员和开发人员最常用的工具之一。通过命令行,用户可...

「Linux」linux常用基本命令(linux常用基本命令和用法)

Linux中许多常用命令是必须掌握的,这里将我学linux入门时学的一些常用的基本命令分享给大家一下,希望可以帮助你们。总结送免费学习资料(包含视频、技术学习路线图谱、文档等)1、显示日期的指令:d...

Linux的常用命令就是记不住,怎么办?于是推出了这套教程

1.帮助命令1.1help命令#语法格式:命令--help#作用:查看某个命令的帮助信息#示例:#ls--help查看ls命令的帮助信息#netst...

Linux的30个常用命令汇总,运维大神必掌握技能!

以下是Linux系统中最常用的30个命令,精简版覆盖日常操作核心需求,适合快速掌握:一、文件/目录操作1.`ls`-列出目录内容`ls-l`(详细信息)|`ls-a`(显示隐藏文件)...

Linux/Unix 系统中非常常用的命令

Linux/Unix系统中非常常用的命令,它们是进行文件操作、文本处理、权限管理等任务的基础。下面是对这些命令的简要说明:**文件操作类:*****`ls`(list):**列出目录内容,显...