Hive SQL语句操作

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介: Hive SQL语句操作

一、 任务描述

本实验任务主要完成基于Hive环境执行一些常用的Hive SQL语句操作,通过完成本实验任务,要求学生熟练掌握Hive SQL的常用语句,掌握Hive的基础和操作。

二、 任务目标

掌握Hive的数据类型

  掌握hive的数据类型的使用

  掌握hive的DDL语句的操作

三、 任务环境

本次环境是:Ubuntu16.04+hadoop-2.7.3.+apache-hive-1.2.2-bin

四、 任务分析

1. 大数据离线处理特点

数据量巨大且保存时间长;

在大量数据上进行复杂的批量运算;

数据在计算之前已经完全到位,不会发生变化;

能够方便的查询批量计算的结果;

不像在线计算当前呈现的各种框架和架构,离线处理目前技术上已经成熟,大家使用的均是:使用Hdfs存储数据,使用MapReduce做批量计算,计算完成的数据如需数据仓库的存储,直接存入Hive,然后从Hive 进行展现。

2. HDFS

Hdfs 是一种分布式文件系统,和任何文件系统一样Hdfs提供文件的读取,写入,删除等操作。Hdfs 是能够很好的解决离线处理中需要存储大量数据的要求Hdfs和本地文件系统的区别如下:

Hdfs 不支持随机读写;

Hdfs 是分布式文件系统,支持数据多备份;

Hdfs 多备份数据存放策略: 第一个副本放在和client一样的node里(如果client不在集群范围内,则这第一个node是随机选取的,当然系统会尝试不选择哪些太满或者太忙的node);第二个副本放置在与第一个节点不同的机架中的node中(随机选择);第三个副本和第二个在同一个机架,随机放在不同的node中。如果还有更多的副本就随机放在集群的node里。

MapReduce 是一种分布式批量计算框架,分为 Map 阶段和 Reduce 阶段。 MapReduce能够很好的解决离线处理中需要进行大量计算的要求。 MapReduce从出现到现在经历了第一代MapReduce v1 和 第二代MapReduce Yarn。

Yarn 框架相对于老的 MapReduce 框架有以下优势:

减小了 JobTracker的资源消耗,之前JobTracker既负责资源分配,也负责任务监控,Yarn 将这两项任务分别交给了ResourceManager 和ApplicationMaster ,减少了之前 JobTracker 单点失败的风险;

现在大部分使用 YARN

3. Yarn 框架的组件功能

• ResourceManager: 负责资源的调度,由两个组件组成:调度器和应用管理 ApplicationsManager (ASM) ;

• ApplicationsManager (ASM) :主要用于管理AM;

• ApplicationMaster (AM) :主要用于管理其对应的应用程序,如MapReduce作业,DAG作业等;

• NodeManager (NM):主要用于管理某个节点上的task和资源;

• Container :容器中封装了机器资源,如内存,CPU, 磁盘,网络等,每个任务会被分配一个容器,该任务只能在该容器中执行,并使用该容器封装的资源


4. Hive

Hive 是一种数据仓库,Hive中的数据存储于文件系统( 大部分使用 Hdfs),Hive 提供了方便的访问数据仓库中数据的HQL方法,该方法将SQL翻译成MapReduce。能够很好的解决离线处理中需要对批量处理结果的查询。

Hive是对MapReduce和HDFS的高级封装,本身不存储表等相关信息。

Hive 将元数据存放在 metastore 中, Hive 的 metastore 有三种工作方式:


内嵌Derby方式: 在同一时间只能有一个进程连接使用数据库;

Local方式 : 使用本地MySQL数据库存储元数据;

Remote方式: 使用远程已经搭建完成的 Mysql 数据库存储元数据;

♥ 知识链接

数据模型

1edcd5f1b857486c9b5b5b05c3703dce.png


实验所需数据和格式如下:

employees.txt内容

John Doe,100000.0,Mary Smith|Todd Jones,Federal Taxes:.2|State Taxes:.05|Insurance:.1,1 Michigan Ave.|Chicago|IL|60600
Mary Smith,100000.0,Mary Smith|Todd Jones,Federal Taxes:.2|State Taxes:.05|Insurance:.1,1MichiganAve.|Chicago|IL|60601
Todd Jones,800000.0,Mary Smith|Todd Jones,Federal Taxes:.2|State Taxes:.05|Insurance:.1,1MichiganAve.|Chicago|IL|60603
Bill King,800000.0,Mary Smith|Todd Jones,Federal Taxes:.2|State Taxes:.05|Insurance:.1,1 Michigan Ave.|Chicago|IL|60605
Boss Man,100000.0,Mary Smith|Todd Jones,Federal Taxes:.2|State Taxes:.05|Insurance:.1,1 Michigan Ave.|Chicago|IL|60604
Fred Finance,800000.0,Mary Smith|Todd Jones,Federal Taxes:.2|State Taxes:.05|Insurance:.1,1 Michigan Ave.|Chicago|IL|60400
Stacy Accountant,800000.0,Mary Smith|Todd Jones,Federal Taxes:.2|State Taxes:.05|Insurance:.1,1 Michigan Ave.|Chicago|IL|60300

五、 任务实施

步骤1、新建hql文件

新建hql文件,在命令终端分别执行命令:cd /simple/和touch create.hql,如图1所示。


130dc79c65aa45daabfd178b7604c275.png


图1 创建文件

 向其中写入hql语句,在命令终端中,在/simple目录下执行命令:vim create.hql, 向其中添加以下语句


1.  
2.          create table employee(
3.  
4.          name string,
5.  
6.          salary float,
7.  
8.          subordinate array<string>,
9.  
10.         deduction map<string,float>,
11. 
12.         address struct<street:string,city:string,state:string,zip:int>
13. 
14.         )
15. 
16.         row format delimited fields terminated by ","
17.         collection items terminated by "|"
18.         map keys terminated by ":";

最终创建如图2所示。


05f3408b344f4d15a8f27631ec9286e9.png


图2 代码显示


步骤2、hive中执行此文件

执行命令:service mysql start启动mysql服务,然后执行命令:start-all.sh启动hadoop,如图3所示。


ff0fe351352d4348b5c6ede413dc2e07.png


图3 启动hadoop服务

执行命令:cd /simple/hive/bin进入hive的安装目录bin下,执行命令:./hive启动hive终端,如图4所示。


f8cd079ca7f84d99a0fb5bfec6970a45.png


图4 进入hive shell界面

 hive命令行中执行以下语句:source /simple/create.hql; 如图5所示。

2352017dae054af19e9f0a5a01d985e3.png



图5 在hive中执行文件创建表

 可以看出创建成功。


步骤3、向表中插入数据

通过load命令向表中加载本地数据,如图6所示。

5a6082ac0ea945f5b6e7913298f2c7c8.png



图6 向表中加载数据


步骤4、Select语句查询详解

使用索引查询集合数据类型中的元素。数组索引是基于0的,这和java中是一样的,下面是选择subordinate数组中的第一个元素的查询,如图7所示。

6c5bdeff0d6040d18f06cfbd288455d0.png



图7 查询数组数据

 引用map类型中的一个元素。用户可以使用ARRAY[…]语法,但是使用的是键值而不是整数索引,如图8所示。

c67aa5370da94e8c91fe77361c1487e2.png



图8 查询map数据

 引用struct中的一个元素,用户可以使用“.“符号,如图9所示。

a580be0f0ba64686ab5a715bbef82436.png



图9 查询struct数据


步骤5、使用列值进行计算

使用group by计算门牌号相同的雇员的总薪水,执行命令”select address.zip,sum(salary) from employee group by address.zip;”,如图10所示。


7f95e401ac0647209f42932e5fefa4e5.png


图10 门牌号相同的雇员的总薪水

 使用group by 计算不同州的员工的平均薪水,执行命令”select address.state,avg(salary) from employee group by address.state;”,如图11所示。

d296752dadd249cd9cadc43a1287d84a.png



图11 不同州的员工的平均薪水

 可以看出,现在表中所有员工都位于IL州,所以最终结果只有一条记录。

 使用group by 计算不同城市的员工的平均薪水,执行命令”select address.city,avg(salary) from employee group by address.city;”,如图12所示。

c70416708f4347a69f4b9465781cf991.png



图12 不同城市的员工的平均薪水



fccd5cc22a1d43b18d52599280108cd7.png


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2月前
|
SQL 分布式计算 Hadoop
Hadoop-12-Hive 基本介绍 下载安装配置 MariaDB安装 3台云服务Hadoop集群 架构图 对比SQL HQL
Hadoop-12-Hive 基本介绍 下载安装配置 MariaDB安装 3台云服务Hadoop集群 架构图 对比SQL HQL
69 3
|
2月前
|
SQL 分布式计算 Java
大数据-96 Spark 集群 SparkSQL Scala编写SQL操作SparkSQL的数据源:JSON、CSV、JDBC、Hive
大数据-96 Spark 集群 SparkSQL Scala编写SQL操作SparkSQL的数据源:JSON、CSV、JDBC、Hive
39 0
|
2月前
|
SQL 分布式计算 关系型数据库
Hadoop-24 Sqoop迁移 MySQL到Hive 与 Hive到MySQL SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
Hadoop-24 Sqoop迁移 MySQL到Hive 与 Hive到MySQL SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
89 0
|
4月前
|
SQL 存储 分布式计算
插入Hive表数据SQL
【8月更文挑战第10天】
|
4月前
|
SQL 物联网 数据处理
"颠覆传统,Hive SQL与Flink激情碰撞!解锁流批一体数据处理新纪元,让数据决策力瞬间爆表,你准备好了吗?"
【8月更文挑战第9天】数据时代,实时性和准确性至关重要。传统上,批处理与流处理各司其职,但Apache Flink打破了这一界限,尤其Flink与Hive SQL的结合,开创了流批一体的数据处理新时代。这不仅简化了数据处理流程,还极大提升了效率和灵活性。例如,通过Flink SQL,可以轻松实现流数据与批数据的融合分析,无需在两者间切换。这种融合不仅降低了技术门槛,还为企业提供了更强大的数据支持,无论是在金融、电商还是物联网领域,都将发挥巨大作用。
61 6
|
5月前
|
SQL 分布式计算 MaxCompute
SQL开发问题之对于ODPS中的UNION操作,执行计划的问题如何解决
SQL开发问题之对于ODPS中的UNION操作,执行计划的问题如何解决
|
5月前
|
SQL 分布式计算 DataWorks
MaxCompute操作报错合集之使用sql查询一个表的分区数据时遇到报错,该如何解决
MaxCompute是阿里云提供的大规模离线数据处理服务,用于大数据分析、挖掘和报表生成等场景。在使用MaxCompute进行数据处理时,可能会遇到各种操作报错。以下是一些常见的MaxCompute操作报错及其可能的原因与解决措施的合集。
|
5月前
|
SQL 分布式计算 资源调度
MaxCompute操作报错合集之执行SQL Union All操作时,数据类型产生报错,该怎么解决
MaxCompute是阿里云提供的大规模离线数据处理服务,用于大数据分析、挖掘和报表生成等场景。在使用MaxCompute进行数据处理时,可能会遇到各种操作报错。以下是一些常见的MaxCompute操作报错及其可能的原因与解决措施的合集。
136 1
|
5月前
|
SQL 分布式计算 大数据
MaxCompute操作报错合集之执行多条SQL语句时,使用同一个实例来运行,遇到报错,该如何解决
MaxCompute是阿里云提供的大规模离线数据处理服务,用于大数据分析、挖掘和报表生成等场景。在使用MaxCompute进行数据处理时,可能会遇到各种操作报错。以下是一些常见的MaxCompute操作报错及其可能的原因与解决措施的合集。