Advertisement

Hive基础查询文档上传

  •  5星
  •     浏览量: 0
  •     大小:None
  •      文件类型:DOCX


简介:
本文档提供了关于Apache Hive的基础查询指南,涵盖了数据插入、选择和删除等操作方法,适用于初学者快速上手使用Hive进行大数据处理。 ### Hive基础查询知识点详解 #### 一、Hive概述与基本操作 - **Hive简介**:Apache Hive 是一个建立在 Hadoop 上的数据仓库工具,主要用于对存储在 Hadoop 文件系统中的各种数据集进行数据整理、特殊查询和分析存储。Hive 给用户提供了类SQL的查询语言“HiveQL”,使不熟悉MapReduce的用户可以方便地利用Hive处理数据。 - **Hive基本操作**: - **创建数据库**:`CREATE DATABASE db_name;` - **使用数据库**:`USE db_name;` - **查看当前使用的数据库**:`SHOW DATABASES;` - **查看表**:`SHOW TABLES;` #### 二、数据表的创建与管理 - **创建数据表**:在Hive中,可以通过以下命令创建数据表: ```sql CREATE TABLE IF NOT EXISTS table_name ( column_name_1 data_type comment column_comment, column_name_2 data_type comment column_comment, ... ) ROW FORMAT DELIMITED FIELDS TERMINATED BY delimiter STORED AS textfile; ``` 其中,`IF NOT EXISTS`表示如果表不存在则创建;`ROW FORMAT DELIMITED FIELDS TERMINATED BY delimiter`定义了字段分隔符;`STORED AS textfile`指定了存储格式为文本段落件。 - **示例**:根据给定的部分内容,创建了四个数据表:student_info、course_info、teacher_info和score_info。 ```sql -- 创建学生表 DROP TABLE IF EXISTS student_info; CREATE TABLE IF NOT EXISTS student_info( stu_id STRING COMMENT 学生 id, stu_name STRING COMMENT 学生姓名, birthday STRING COMMENT 出生日期, sex STRING COMMENT 性别 ) ROW FORMAT DELIMITED FIELDS TERMINATED BY , STORED AS TEXTFILE; -- 创建课程表 DROP TABLE IF EXISTS course_info; CREATE TABLE IF NOT EXISTS course_info( course_id STRING COMMENT 课程 id, course_name STRING COMMENT 课程名, tea_id STRING COMMENT 任课老师 id ) ROW FORMAT DELIMITED FIELDS TERMINATED BY , STORED AS TEXTFILE; -- 创建老师表 DROP TABLE IF EXISTS teacher_info; CREATE TABLE IF NOT EXISTS teacher_info( tea_id STRING COMMENT 老师 id, tea_name STRING COMMENT 老师姓名 ) ROW FORMAT DELIMITED FIELDS TERMINATED BY , STORED AS TEXTFILE; -- 创建分数表 DROP TABLE IF EXISTS score_info; CREATE TABLE IF NOT EXISTS score_info( stu_id STRING COMMENT 学生 id, course_id STRING COMMENT 课程 id, score INT COMMENT 成绩 ) ROW FORMAT DELIMITED FIELDS TERMINATED BY , STORED AS TEXTFILE; ``` #### 五、数据加载 - **数据文件准备**:在Linux环境下创建指定目录并上传数据文件。 ```bash mkdir data vim student_info.txt vim course_info.txt vim teacher_info.txt vim score_info.txt ``` - **加载数据到表中**:使用`LOAD DATA LOCAL INPATH`命令将本地文件加载到Hive表中。 ```sql LOAD DATA LOCAL INPATH optmoduledatastudent_info.txt INTO TABLE student_info; LOAD DATA LOCAL INPATH optmoduledatacourse_info.txt INTO TABLE course_info; LOAD DATA LOCAL INPATH optmoduledatateacher_info.txt INTO TABLE teacher_info; LOAD DATA LOCAL INPATH optmoduledatascore_info.txt INTO TABLE score_info; ``` #### 六、基础查询案例 - **案例1:查询所有学生的姓名和成绩**: ```sql SELECT s.stu_name, sc.score FROM student_info s JOIN score_info sc ON s.stu_id = sc.stu_id; ``` - **案例2:查询所有学生的姓名、课程名称和成绩**: ```sql SELECT s.stu_name, c.course_name, sc.score FROM student_info s JOIN score_info sc ON s.stu_id = sc.stu_id JOIN course_info c ON sc.course_id = c.course_id; ``` - **案例3:查询每个学生的总成绩**: ```sql SELECT s.stu_name, SUM(sc.score) as total_score FROM student_info s JOIN score_info sc ON s.stu_id = sc.stu_id GROUP BY s.stu_name; ``` - **案例4:查询成绩最高的学生及其成绩**: ```sql SELECT s.stu_name, MAX(sc.score) as highest_score FROM student_info s JOIN score_info sc ON s.stu_id = sc.stu_id GROUP BY s.stu_name; ``` #### 七、进阶技巧 - **多表关联**:在实际应用中,通常需要连接多个表来获取所需的信息。例如,在上述案例2中我们通过连接三个表(学生表、课程表和分数表)来获取学生的

全部评论 (0)

还没有任何评论哟~
客服
客服
  • Hive
    优质
    本文档提供了关于Apache Hive的基础查询指南,涵盖了数据插入、选择和删除等操作方法,适用于初学者快速上手使用Hive进行大数据处理。 ### Hive基础查询知识点详解 #### 一、Hive概述与基本操作 - **Hive简介**:Apache Hive 是一个建立在 Hadoop 上的数据仓库工具,主要用于对存储在 Hadoop 文件系统中的各种数据集进行数据整理、特殊查询和分析存储。Hive 给用户提供了类SQL的查询语言“HiveQL”,使不熟悉MapReduce的用户可以方便地利用Hive处理数据。 - **Hive基本操作**: - **创建数据库**:`CREATE DATABASE db_name;` - **使用数据库**:`USE db_name;` - **查看当前使用的数据库**:`SHOW DATABASES;` - **查看表**:`SHOW TABLES;` #### 二、数据表的创建与管理 - **创建数据表**:在Hive中,可以通过以下命令创建数据表: ```sql CREATE TABLE IF NOT EXISTS table_name ( column_name_1 data_type comment column_comment, column_name_2 data_type comment column_comment, ... ) ROW FORMAT DELIMITED FIELDS TERMINATED BY delimiter STORED AS textfile; ``` 其中,`IF NOT EXISTS`表示如果表不存在则创建;`ROW FORMAT DELIMITED FIELDS TERMINATED BY delimiter`定义了字段分隔符;`STORED AS textfile`指定了存储格式为文本段落件。 - **示例**:根据给定的部分内容,创建了四个数据表:student_info、course_info、teacher_info和score_info。 ```sql -- 创建学生表 DROP TABLE IF EXISTS student_info; CREATE TABLE IF NOT EXISTS student_info( stu_id STRING COMMENT 学生 id, stu_name STRING COMMENT 学生姓名, birthday STRING COMMENT 出生日期, sex STRING COMMENT 性别 ) ROW FORMAT DELIMITED FIELDS TERMINATED BY , STORED AS TEXTFILE; -- 创建课程表 DROP TABLE IF EXISTS course_info; CREATE TABLE IF NOT EXISTS course_info( course_id STRING COMMENT 课程 id, course_name STRING COMMENT 课程名, tea_id STRING COMMENT 任课老师 id ) ROW FORMAT DELIMITED FIELDS TERMINATED BY , STORED AS TEXTFILE; -- 创建老师表 DROP TABLE IF EXISTS teacher_info; CREATE TABLE IF NOT EXISTS teacher_info( tea_id STRING COMMENT 老师 id, tea_name STRING COMMENT 老师姓名 ) ROW FORMAT DELIMITED FIELDS TERMINATED BY , STORED AS TEXTFILE; -- 创建分数表 DROP TABLE IF EXISTS score_info; CREATE TABLE IF NOT EXISTS score_info( stu_id STRING COMMENT 学生 id, course_id STRING COMMENT 课程 id, score INT COMMENT 成绩 ) ROW FORMAT DELIMITED FIELDS TERMINATED BY , STORED AS TEXTFILE; ``` #### 五、数据加载 - **数据文件准备**:在Linux环境下创建指定目录并上传数据文件。 ```bash mkdir data vim student_info.txt vim course_info.txt vim teacher_info.txt vim score_info.txt ``` - **加载数据到表中**:使用`LOAD DATA LOCAL INPATH`命令将本地文件加载到Hive表中。 ```sql LOAD DATA LOCAL INPATH optmoduledatastudent_info.txt INTO TABLE student_info; LOAD DATA LOCAL INPATH optmoduledatacourse_info.txt INTO TABLE course_info; LOAD DATA LOCAL INPATH optmoduledatateacher_info.txt INTO TABLE teacher_info; LOAD DATA LOCAL INPATH optmoduledatascore_info.txt INTO TABLE score_info; ``` #### 六、基础查询案例 - **案例1:查询所有学生的姓名和成绩**: ```sql SELECT s.stu_name, sc.score FROM student_info s JOIN score_info sc ON s.stu_id = sc.stu_id; ``` - **案例2:查询所有学生的姓名、课程名称和成绩**: ```sql SELECT s.stu_name, c.course_name, sc.score FROM student_info s JOIN score_info sc ON s.stu_id = sc.stu_id JOIN course_info c ON sc.course_id = c.course_id; ``` - **案例3:查询每个学生的总成绩**: ```sql SELECT s.stu_name, SUM(sc.score) as total_score FROM student_info s JOIN score_info sc ON s.stu_id = sc.stu_id GROUP BY s.stu_name; ``` - **案例4:查询成绩最高的学生及其成绩**: ```sql SELECT s.stu_name, MAX(sc.score) as highest_score FROM student_info s JOIN score_info sc ON s.stu_id = sc.stu_id GROUP BY s.stu_name; ``` #### 七、进阶技巧 - **多表关联**:在实际应用中,通常需要连接多个表来获取所需的信息。例如,在上述案例2中我们通过连接三个表(学生表、课程表和分数表)来获取学生的
  • Hive优化
    优质
    简介:Hive查询优化旨在提升基于Hadoop的大数据仓库系统Hive的性能,通过分析和改进SQL查询语句、使用恰当的表分区与索引策略以及调整Hive配置参数等手段,从而加快查询响应速度并提高资源利用率。 所有的调优都离不开对CPU、内存、IO这三样资源的权衡及调整。Hive QL的执行本质上是MapReduce任务的运行,因此优化主要考虑到两个方面:MapReduce任务优化和SQL语句优化。 一、MapReduce任务优化 1. 设置合理的task数量(map task和reduce task)。一方面,由于Hadoop MR task的启动及初始化时间较长,如果设置过多的任务可能会导致这些时间和资源浪费。另一方面,在处理复杂任务时,若设定过少的任务则可能导致计算资源利用不足。因为其读取输入使用的是Hadoop API,所以在调整task数量时需要综合考虑上述因素。
  • Hive SQL语句
    优质
    简介:Hive SQL查询语句是用于Apache Hive的数据仓库工具中的一种查询语言,它模仿了标准SQL语法,使用户能够轻松地进行大数据集的存储、查询和数据管理。 在Hive配置单元中,默认包含一个名为default的数据库。 创建数据库: ``` create database [if not exists] ; ``` 显示所有数据库: ``` show databases; ``` 删除数据库(默认情况下,Hive不允许直接删除含有表的数据库,需要先清空或移除这些表): ``` drop database if exists [restrict|cascade]; ``` 使用`cascade`关键字可以强制删除一个包含数据的数据库。若未指定,则默认为`restrict`模式。 切换到特定数据库: ``` use ; ```
  • Hive中的操作
    优质
    本教程深入讲解了Apache Hive中的查询操作,包括SQL语法、数据筛选、排序及连接等核心概念和实践技巧,帮助用户高效处理大规模数据集。 一、查询语法 Hive的查询语句遵循标准SQL的基本结构,并且有一些特有的扩展。基本语法如下: ```sql [WITH CommonTableExpression (, CommonTableExpression)*] SELECT [ALL | DISTINCT] select_expr, select_expr, ... FROM table_reference [WHERE where_condition] [GROUP BY col_list] [ORDER BY col_list] [CLUSTER BY col_list | [DISTRIBUTE BY col_list]] [SORT BY col_list] [LIMIT number] ``` - `WITH` 子句用于创建临时的结果表(Common Table Expressions,CTE),从这些结果表中可以进一步进行查询。 - `SELECT` 部分用于指定要从表中选择的列或表达式。使用 `ALL` 表示选择所有行,而用 `DISTINCT` 来去除重复行。 - 在 `FROM` 后跟的是你要查询的表名或者视图(table_reference)。 - 使用 `WHERE` 子句设置查询条件,只有满足这些条件的数据才会被返回。 - 通过使用 `GROUP BY` 对数据进行分组,并且通常与聚合函数如 COUNT, SUM, AVG 等一起使用。 - 使用 `ORDER BY` 对结果集中的行按照某一列排序。默认情况下是升序排列(ASC),也可以指定降序排列(DESC)。 - `CLUSTER BY` 和 `DISTRIBUTE BY` 主要用于分布式计算环境,控制数据如何分布到不同的分区或节点上。 - 使用 `SORT BY` 进行本地排序,只在单个节点内部有效。 - 最后通过使用 `LIMIT` 来限制返回的行数。 二、基本查询 1. **全表和特定列查询** - 全表查询:使用星号(*)代表所有列,例如 `SELECT * FROM emp;` - 特定列查询:列出需要的列名,如 `SELECT empno, ename FROM emp;` 2. **设置别名** 使用关键字`AS`可以为结果集中的字段提供更易理解的名字。比如,使用 `SELECT ename AS name, deptno dn FROM emp;` 可以使得查询输出更具可读性。 3. **算术运算符** Hive 支持基本的算数操作如加法(`+`)、减法(`-`)、乘法(`*`)、除法(`/`) 和取模 (`%`). 例如,执行 `SELECT sal + 1 AS sal FROM emp;` 将返回每个员工薪水增加一的结果。 4. **其他操作** - 聚合函数:如 COUNT, SUM, AVG, MIN, MAX 等用于统计或计算一组值。 - 比较运算符:包括 =、<、>、<=、>= 和 !=,用于比较两个值。 - 逻辑运算符 AND、OR 和 NOT 可以用来组合条件。 - 字符串函数:如 CONCAT, SUBSTRING, UPPER, LOWER 等来处理字符串数据。 三、注意事项 - Hive SQL 对大小写不敏感,但是为了提高代码的可读性,建议使用大写字母书写关键词。 - 语句可以写在一行或多行中。然而,为增加清晰度和易于理解复杂查询结构,推荐每条语句的关键部分独立成行展示。 - 关键词不应被缩写,并且不应当分行书写。 - 使用适当的缩进来提升代码的可读性。 实际操作时结合这些基本查询方法,可以构建满足各种需求复杂的查询以实现高效的大规模数据处理。
  • MySQL、连接、子及正则表达式详解
    优质
    本教程深入解析MySQL中的基础查询、连接查询、子查询以及正则表达式查询技巧,帮助用户掌握高效的数据检索方法。 查询使用正则表达式在MySQL中有强大的功能来匹配特定模式的字符串记录。 1. 使用字符“^”可以查找所有以指定字符或序列开头的条目。 - 例如,找出所有名字以字母“A”开始的学生:`select * from STUDENT where STU_NAME REGEXP ^阿` - 查找所有数字开头的名字: `select * from STUDENT where STU_NAME REGEXP ^[0-9]` 2. 使用字符“$”可以查找特定结束符或序列的条目。 - 例如,找出名字以某个数字结尾的所有学生:`select * from STUDENT where STU_NAME REGEXP [0-9]$` 3. 正则表达式中的.用于匹配任何单一字符。这允许在查询中灵活地指定不确定位置上的字符。 4. 使用方括号([])可以创建一个包含特定字母或数字集合的规则,只要记录包括这些集内的任何一个元素就会被检索出来。 - 例如:`select * from STUDENT where STU_NAME REGEXP [0-9a-z]` 这一语句会查找名字中至少含有一个小写字母或者数字的学生。 5. 正则表达式中的“{M,N}”用于指定一个字符串序列连续出现的次数。 - 例如:`select * from STUDENT where STU_NAME REGEXP o{2}` 这个查询会查找名字中包含两个连续‘o’字符的学生。 6. 正则表达式中的“+”表示前面定义的一个或多个匹配项。 - 如,要找出所有名称至少有一个fa序列的条目:`select * from STUDENT where STU_NAME REGEXP (fa)+` 这里要注意的是正则表达式的每个元素都必须严格遵循语法以确保查询准确无误。 总结来说,MySQL中的REGEXP关键字提供了一种灵活而强大的方法来匹配和检索特定模式的记录,通过使用各种符号如“^”、“$”、.、方括号([])、花括号({})以及加号(+)等可以构建复杂的正则表达式查询。
  • Hive可视化与工具
    优质
    Hive可视化与查询工具旨在简化大数据处理流程,通过直观界面让用户轻松执行SQL查询、分析及数据管理,无需深入了解底层架构。 HIVE可视化工具和查询工具可以帮助用户更方便地管理和分析数据。这类工具通常提供直观的界面,使用户能够轻松执行复杂的SQL查询,并以图表形式展示结果。通过使用这些工具,数据分析人员可以提高工作效率并获得对数据更深的理解。
  • Elasticsearch Kibana解析
    优质
    本课程深入浅出地讲解了Elasticsearch与Kibana的基础知识及常用查询方法,帮助学员快速掌握这两款强大的数据检索和分析工具。 今天分享一篇关于Elasticsearch Kibana简单查询的文章。我觉得这篇文章的内容非常不错,现在推荐给大家参考。希望对大家有所帮助。
  • Hive-3.1.3在CDH6.3.2的升级
    优质
    本文档详细记录了将Apache Hive从较旧版本升级至3.1.3版的过程和注意事项,专门针对Cloudera Distribution Hadoop (CDH) 6.3.2环境。涵盖了配置更改、依赖项调整及兼容性问题解决方案,帮助用户顺利完成升级以利用新功能并提升系统性能。 ### CDH6.3.2升级Hive至3.1.3版本的详细步骤与注意事项 #### 一、准备工作 **1.1 备份Hive库** 在进行任何重大变更之前,备份现有的Hive元数据是至关重要的一步。这确保了在升级过程中出现问题时能够快速恢复到之前的状态。 ``` mysqldump -uroot -proot hive > .hive.sql ``` 这条命令使用`mysqldump`工具将Hive数据库的内容导出为一个SQL脚本段落件`hive.sql`。这里假设MySQL数据库的用户名为`root`,密码也为`root`。如果你的实际环境中这些值不同,请相应地修改。 **1.2 下载Hive-3.1.3** 为了进行Hive的升级,首先需要下载Hive-3.1.3版本的二进制包。 ``` cd optsoftwarehive wget https://dlcdn.apache.org/hive/hive-3.1.3/apache-hive-3.1.3-bin.tar.gz tar -zxvf apache-hive-3.1.3-bin.tar.gz ``` 这些命令分别用于进入指定目录、下载Hive-3.1.3的压缩包,并解压该压缩包。 **1.3 备份Hive目录** 在替换Hive相关的文件之前,还需要备份现有的Hive安装目录。这一步是为了防止升级过程中出现意外情况导致原有配置丢失。 ``` cd optclouderaparcelsCDH-6.3.2-1.cdh6.3.2.p0.1605554lib cp -r hive hive.212.bak ``` 这些命令用于切换到Cloudera的CDH lib目录下,并复制`hive`目录到`hive.212.bak`作为备份。 #### 二、替换Hive相关文件 **2.1 替换Hive相关Jar包** 在升级Hive的过程中,需要替换原有的JAR包为新版本的JAR包。这一步骤对于确保新版本的Hive能够正常工作至关重要。 ``` cd hivelib rm -rf hive-*.jar cp optsoftwarehiveapache-hive-3.1.3-binlibhive-* . ``` 这些命令用于删除旧版本的所有`hive-*.jar`文件,并将Hive-3.1.3中的所有`hive-*`文件复制到`lib`目录下。 **2.2 替换执行文件** 除了替换JAR包外,还需要替换执行文件,以确保Hive服务能够正确启动并运行新版本的Hive。 ``` cd optclouderaparcelsCDH-6.3.2-1.cdh6.3.2.p0.1605554libhivebin cp optsoftwarehiveapache-hive-3.1.3-binbin* . ``` 这些命令用于将新版本Hive的执行文件复制到Hive的服务目录下。 #### 三、升级数据库 升级Hive版本通常也需要升级Hive元数据存储的数据库。这一步骤通常通过运行一系列升级脚本来完成。 ``` mysql -uroot -p use hive; source upgrade-2.1.0-to-2.2.0.mysql.sql; source upgrade-2.2.0-to-2.3.0.mysql.sql; source upgrade-2.3.0-to-3.0.0.mysql.sql; source upgrade-3.0.0-to-3.1.0.mysql.sql; ``` 这些命令用于登录MySQL数据库,选择Hive数据库,并依次运行升级脚本。升级脚本包含了必要的DDL语句来更新数据库结构,以适应新版本Hive的要求。 #### 四、重启Hive服务 最后一步是在完成所有升级步骤后重启Hive服务,以便让新的配置生效。 ``` service cloudera-scm-agent restart ``` 这条命令用于重启Cloudera Manager Agent服务,确保Hive服务能够在升级后正常启动和运行。
  • 数据知识.zip
    优质
    本资料包涵盖了数据查询的基础概念、常用SQL语句及数据库操作技巧,适合初学者快速入门和掌握数据查询技术。 C#语言和SQL Server数据库技术第九章数据查询基础的教学演示案例、上机练习参考答案及课后作业参考答案相关示例提供。
  • 华龙电音
    优质
    华龙电音基础查询器是一款集成了音乐制作所需基本功能的应用程序,旨在为用户提供便捷的基础电子音乐创作和查询服务。它涵盖了节奏生成、旋律构建以及多种音效编辑工具,助力用户轻松探索无限的音乐创意世界。 华龙电音基调查询器提供相关服务。