Hive 基础操作

合集下载

大数据HCIA考试模拟题及答案

大数据HCIA考试模拟题及答案

大数据HCIA考试模拟题及答案一、单选题(共40题,每题1分,共40分)1、关于Hive建表的基本操作,描述正确的是?A、创建外部表的时需要指定external关键字B、一旦表创建好,不可再修改列名C、一旦表创建好,不可再修改表名D、一旦表创建好,不可再增加新列正确答案:A2、Flink的数据转换操作在以下哪个环节中完成?A、sourceB、sinkC、transformationD、channel正确答案:C3、Kafka集群中,Kafka服务端部署的角色是?A、ProducerB、ConsumerC、ZooKeeperD、Broker正确答案:D4、可以通过以下哪个命令创建节点数据?A、ls/nodeB、get/nodeC、create/nodeD、set/nodedata正确答案:C5、在Zookeeper和YARN的协同工作中,当ActiveResourceManager产生故障时,StandbyResourceManager会从以下哪个项目中获取Application相关信息?A、warehouseB、metastoreC、StorageD、Statestore正确答案:D6、以下关于Kafka的描述错误的有?A、具有消息持久化,高吞吐,实时等特性B、用作活动流和运营数据处理管道的基础C、使用Scala,Java语言实现D、由ApacheHadoop开发,并于2011年开源正确答案:D7、下面关于Zookeeper特性的描述错误的是?()A、Zookeeper节点数必须为奇数个。

B、客户端所发送的更新会按照它们被发送的顺序进行应用。

C、消息更新只能成功或者失败,没有中间状态。

D、一条消息要被超过半数的Server接收,它将可以成功写入磁盘正确答案:A8、Flink中的()接口用于流数据处理,()接口用于批处理?A、BatchAPI,StreamAPIB、DataStreamAPI,DataSetAPIC、StreamAPI,BatchAPID、DataBatchAPI,DataStreamAPI正确答案:B9、Flume支持监控并传输目录下新增的文件,可实现准实时数据传输,以上描述的是哪一类source?A、syslogsourceB、spoolingdirectorysourceC、httpsourceD、execsource正确答案:B10、FusionlnsightHD中Loader实例必须与哪个实例部署在一起?A、DataNodeB、RegionServerC、ResourceManagerD、Nodemanager正确答案:D11、在Zookeeper和YARN的协同工作中,当ActiveResourceManager产生故障时,StandbyResourceManager会从以下哪个目录中获取Application相关信息()A、warchouseB、metastoreC、StatestoreD、Storage正确答案:C12、哪个不是Flume的channel类型A、MemoryChannelB、FileChannelC、JDBCChannelD、HDFSChannel正确答案:D13、FusionInsightHDHBase的管理进程是如何选择主节点的?A、随机选取B、由RegionServer进行裁决C、通过ZooKeeper进行裁决D、HMaster为双主模式,不需要进行裁决正确答案:C14、FuskmlnsightHD集群规划中,管理节点&控制节点&数据节点合一部署方案适合什么样的场景?A、30节点以下B、100节点以上C、100-200节点D、200节点以上正确答案:A15、关于Hive与传统数据仓库的对比,以下描述错误的是?()A、由于Hive的数据存储在HDFS中,所以可以保证数据的高容错、高可靠。

hive练习题

hive练习题

Hive 练习题一、Hive 基础概念1. 简述 Hive 的主要用途。

2. 什么是 HiveQL?3. Hive 中有哪些主要的存储格式?4. 什么是 Hive 的元数据?5. 简述 Hive 的架构。

二、HiveQL 语法1. 列出 HiveQL 中创建表的常用语法。

2. 如何在 HiveQL 中创建外部表?3. 简述 HiveQL 中数据类型。

4. 列出 HiveQL 中常用的聚合函数。

5. 如何在 HiveQL 中使用 JOIN 操作?三、Hive 数据操作1. 如何在 Hive 中插入数据?2. 如何在 Hive 中更新数据?3. 如何在 Hive 中删除数据?4. 简述 Hive 中的分区和分桶。

5. 如何在 Hive 中进行数据备份和恢复?四、Hive 性能优化1. 列出 Hive 中常见的性能问题。

2. 如何优化 Hive 的查询性能?3. 什么是 Hive 的 MapReduce 执行引擎?4. 如何在 Hive 中使用 Tez 执行引擎?5. 如何使用 Hive 的资源管理器?五、Hive 实际应用1. 如何使用 Hive 进行数据清洗?2. 如何使用 Hive 进行数据挖掘?3. 如何使用 Hive 进行数据仓库构建?4. 如何使用 Hive 进行实时数据分析?5. 如何使用 Hive 进行大数据处理?六、Hive 与其他技术集成1. 如何将 Hive 与 Hadoop 集成?2. 如何将 Hive 与 Spark 集成?3. 如何将 Hive 与 Flink 集成?4. 如何将 Hive 与 HBase 集成?5. 如何将 Hive 与 Elasticsearch 集成?七、Hive 高级特性1. 什么是 Hive 的视图?2. 如何在 Hive 中使用存储过程?3. 什么是 Hive 的临时表?4. 如何在 Hive 中使用事务?5. 什么是 Hive 的安全特性?八、Hive 实践案例1. 如何使用 Hive 分析用户行为数据?2. 如何使用 Hive 进行电商数据分析?3. 如何使用 Hive 进行社交媒体数据分析?4. 如何使用 Hive 进行物联网数据分析?5. 如何使用 Hive 进行金融数据分析?九、Hive 数据模型1. 什么是 Hive 中的行模型?2. 什么是 Hive 中的列模型?3. 什么是 Hive 中的星型模型?4. 什么是 Hive 中的雪花模型?5. 如何在 Hive 中创建星型模型和雪花模型?十、Hive 元数据管理1. 什么是 Hive 的元数据仓库?2. 如何在 Hive 中管理元数据?3. 如何在 Hive 中查询元数据?4. 如何在 Hive 中修改元数据?5. 如何在 Hive 中备份和恢复元数据?十一、Hive 高级查询1. 如何在 Hive 中使用子查询?2. 如何在 Hive 中使用窗口函数?3. 如何在 Hive 中使用临时视图?4. 如何在 Hive 中使用用户定义函数(UDF)?5. 如何在 Hive 中使用用户定义聚合函数(UDAF)?十二、Hive 安全性和权限控制1. 什么是 Hive 的权限控制?2. 如何在 Hive 中设置用户权限?3. 如何在 Hive 中使用角色管理?4. 如何在 Hive 中使用 Kerberos 认证?5. 如何在 Hive 中使用安全模式?十三、Hive 与 HDFS1. 如何在 Hive 中管理 HDFS 文件?2. 如何在 Hive 中监控 HDFS 文件使用情况?3. 如何在 Hive 中优化 HDFS 文件存储?4. 如何在 Hive 中使用 HDFS 的压缩功能?5. 如何在 Hive 中处理 HDFS 中的大文件?十四、Hive 与 YARN1. 什么是 YARN?2. 如何在 Hive 中使用 YARN?3. 如何在 Hive 中配置 YARN?4. 如何在 Hive 中优化 YARN 资源使用?5. 如何在 Hive 中监控 YARN 资源分配?十五、Hive 与其他工具的集成1. 如何将 Hive 与 Apache Zeppelin 集成?2. 如何将 Hive 与 Apache Superset 集成?3. 如何将 Hive 与 Apache Spark 集成进行数据流处理?4. 如何将 Hive 与 Apache Kafka 集成进行实时数据处理?5. 如何将 Hive 与 Apache HBase 集成进行实时查询?十六、Hive 性能调优案例1. 如何优化 Hive 查询中的 JOIN 操作?2. 如何优化 Hive 查询中的 GROUP BY 操作?3. 如何优化 Hive 查询中的 ORDER BY 操作?4. 如何优化 Hive 查询中的 DISTINCT 操作?5. 如何优化 Hive 查询中的大数据量处理?十七、Hive 部署与维护1. 如何在集群中部署 Hive?2. 如何配置 Hive 的集群参数?3. 如何监控 Hive 集群的性能?4. 如何备份和恢复 Hive 集群?5. 如何进行 Hive 集群的升级和扩容?十八、Hive on Spark1. 什么是 Hive on Spark?2. 如何在 Spark 中使用 Hive?3. Hive on Spark 的优势是什么?4. 如何在 Hive on Spark 中优化性能?5. 如何在 Hive on Spark 中处理大数据集?十九、Hive on Tez1. 什么是 Hive on Tez?2. 如何在 Tez 中使用 Hive?3. Hive on Tez 的特点是什么?4. 如何在 Hive on Tez 中进行性能调优?5. Hive on Tez 与 Hive on Spark 的比较。

(完整word版)HIVE说明文档

(完整word版)HIVE说明文档

HIVE说明文档一、HIVE简介:1、HIVE介绍Hive是一个基于Hadoop的开源数据仓库工具,用于存储和处理海量结构化数据。

它是Facebook 2008年8月开源的一个数据仓库框架,提供了类似于SQL语法的HQL语句作为数据访问接口。

Hive 是基于Hadoop 构建的一套数据仓库分析系统,它提供了丰富的SQL查询方式来分析存储在Hadoop 分布式文件系统中的数据,可以将结构化的数据文件映射为一张数据库表,并提供完整的SQL查询功能,可以将SQL语句转换为MapReduce任务进行运行,通过自己的SQL 去查询分析需要的内容,这套SQL 简称Hive SQL,使不熟悉mapreduce 的用户很方便的利用SQL 语言查询,汇总,分析数据.2、HIVE适用性:它与关系型数据库的SQL 略有不同,但支持了绝大多数的语句如DDL、DML 以及常见的聚合函数、连接查询、条件查询。

HIVE不适合用于联机(online)事务处理,也不提供实时查询功能。

它最适合应用在基于大量不可变数据的批处理作业。

HIVE的特点:可伸缩(在Hadoop的集群上动态的添加设备),可扩展,容错,输入格式的松散耦合.hive不支持用insert语句一条一条的进行插入操作,也不支持update操作。

数据是以load的方式加载到建立好的表中。

数据一旦导入就不可以修改。

DML包括:INSERT插入、UPDATE更新、DELETE删除。

3、HIVE结构Hive 是建立在Hadoop上的数据基础架构,它提供了一系列的工具,可以用来进行数据提取转化加载(ETL),这是一种可以存储、查询和分析存储在Hadoop中的大规模数据的机制,Hive定义了简单的累SQL 查询语言,称为HQL,它允许熟悉SQL的用户查询数据,同时,这个语言也允许熟悉MapReduce开发者的开发自定义的mapper和reducer来处理內建的mapper和reducer无法完成的复杂的分析工作。

hive工作原理流程

hive工作原理流程

hive工作原理流程Hive工作原理流程Hive是一个基于Hadoop的数据仓库基础架构工具,用于处理大规模数据集。

它提供了类似于SQL的查询语言,称为HiveQL,使用户可以使用类似于传统关系型数据库的方式来处理和分析数据。

Hive工作原理流程可以分为数据导入、数据处理和数据导出三个主要步骤。

1. 数据导入在Hive中,数据通常是从外部存储系统(如HDFS)导入的。

首先,用户需要创建一个外部表,定义表的模式和数据存储位置。

然后,通过Hive的LOAD命令将数据加载到创建的表中。

在加载数据之前,Hive还支持数据预处理操作,例如数据清洗、转换和分区等。

当数据成功加载到表中后,就可以进行后续的数据处理操作。

2. 数据处理Hive的数据处理主要通过HiveQL查询语言来实现。

用户可以使用HiveQL编写类似于SQL的查询语句,对表中的数据进行查询、过滤、聚合和排序等操作。

Hive将HiveQL查询转换为一系列的MapReduce任务,并在Hadoop集群上执行这些任务。

在查询过程中,Hive会根据表的元数据信息进行优化,例如使用分区和索引来提高查询性能。

同时,Hive还支持自定义函数和用户自定义聚合函数(UDF和UDAF),以满足特定的数据处理需求。

3. 数据导出在数据处理完成后,用户可以将结果数据导出到外部存储系统或其他应用程序中进行进一步分析或展示。

Hive提供了多种导出数据的方式,例如INSERT操作、CTAS(Create Table As Select)语句和INSERT OVERWRITE语句等。

用户可以根据需要选择合适的导出方式,并定义导出数据的格式和存储位置。

在导出数据之前,Hive还支持数据转换和格式化操作,以满足导出需求。

Hive的工作原理流程可以概括为数据导入、数据处理和数据导出三个主要步骤。

通过定义表结构和加载数据,用户可以在Hive中进行数据处理操作,使用HiveQL查询语言对数据进行查询、过滤和聚合等操作。

Hive基本命令

Hive基本命令

什么是HiveHive:由Facebook开源用于解决海量结构化日志的数据统计框架。

Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张表,并提供类SQL查询功能。

(数据仓库,sql--->hql语句,基本上和sql一样,但是在sql的基础之上增加了新的功能(功能函数))Hive基本操作(1)启动hive[XX]$ bin/hive(2)查看数据库hive>show databases;(3)打开默认数据库hive>use default;(4)显示default数据库中的表hive>show tables;(5)创建一张表hive> create table student(id int, name string) ;(6)显示数据库中有几张表hive>show tables;(7)查看表的结构hive>desc student;(8)向表中插入数据hive> insert into student values(1000,"ss");(9)查询表中数据hive> select * from student;(10)退出hivehive> quit;将本地文件导入Hive案例需求:将本地student.txt这个目录下的数据导入到hive的student(id int, name string)表中。

1)数据准备:在/opt/module/datas/student.txt这个目录下准备数据(1)在/opt/module/目录下创建datas[XX]$ mkdir datas(2)在/opt/module/datas/目录下创建student.txt文件并添加数据[XX]$touch student.txt[XX]$vi student.txt1001XX1002ZZ1003YY注意以tab键间隔。

hive练习题

hive练习题

hive练习题Hive是一种基于Hadoop的数据仓库工具,用于对存储在分布式存储系统HDFS中的大数据进行查询和管理。

以下是一些Hive练习题,可以帮助你更好地理解和掌握Hive的基本概念和操作。

1. Hive基础概念- 什么是Hive?- Hive是如何与Hadoop集成的?- 解释Hive的架构组件。

2. Hive数据类型- Hive支持哪些基本数据类型?- Hive中的复杂数据类型有哪些?- 如何在Hive中创建一个包含多种数据类型的表?3. Hive表操作- 如何在Hive中创建表?- 如何查询Hive表中的所有数据?- 描述Hive中的数据插入操作。

4. Hive查询语句- 编写一个Hive查询,选择特定列的数据。

- 如何在Hive查询中使用WHERE子句进行过滤?- 描述Hive中的GROUP BY和HAVING子句的使用。

5. Hive的聚合函数- Hive中有哪些聚合函数?- 编写一个使用聚合函数的Hive查询。

6. Hive的窗口函数- 解释什么是窗口函数,以及它们在Hive中的用途。

- 编写一个使用窗口函数的Hive查询。

7. Hive的分区和分桶- 什么是Hive中的分区?- 如何在Hive中创建分区表?- 分桶是什么,它如何优化查询性能?8. Hive的索引- Hive支持哪些类型的索引?- 如何在Hive表上创建索引?9. Hive的优化- 描述Hive查询优化的重要性。

- 列举一些常见的Hive查询优化技术。

10. Hive的高级特性- 解释Hive中的视图和它们的作用。

- 什么是Hive的存储过程,它们如何工作?11. Hive与MapReduce- Hive查询是如何转换为MapReduce作业的?- 描述Hive中自定义MapReduce函数的过程。

12. Hive的数据导入导出- 如何将数据导入到Hive表中?- 描述Hive数据导出到HDFS的过程。

13. Hive的安全管理- Hive提供了哪些安全特性?- 如何在Hive中配置用户权限?14. Hive的元数据管理- 解释Hive中的元数据存储。

hive concatenate底层原理

hive concatenate底层原理

hive concatenate底层原理Hive Concatenate的底层原理一、引言Hive是一个基于Hadoop的数据仓库基础设施,它提供了一种将结构化数据映射到Hadoop分布式文件系统的方式。

在Hive中,我们可以使用HiveQL进行数据查询和分析。

在Hive中,Concatenate 是一种常用的操作,可以将多个小文件合并为一个大文件,以提高查询性能和数据处理效率。

本文将探讨Hive Concatenate的底层原理。

二、Hive Concatenate的作用在Hive中,当数据量较大时,文件数量也会相应增加,这可能会导致查询性能下降。

而使用Concatenate操作可以将多个小文件合并为一个大文件,从而减少了文件数量,提高了查询性能和数据处理效率。

三、Hive Concatenate的底层实现原理1. 文件合并策略在Hive中,Concatenate操作是由Merge File操作来实现的。

Merge File操作是一种合并文件的策略,它将多个小文件合并为一个大文件。

在执行Concatenate操作时,Hive会将需要合并的文件按照一定的规则进行分组,然后对每个分组内的文件进行合并,最终生成一个大文件。

2. 文件分组规则Hive将文件分组的规则是基于Hive表的分区信息。

在Hive中,一个表可以按照某个或多个列进行分区,这些分区将数据按照不同的值存储在不同的目录中。

当执行Concatenate操作时,Hive会根据表的分区信息将需要合并的文件分组,每个分组内的文件将被合并为一个大文件。

3. 文件合并过程在文件合并过程中,Hive会启动一个MapReduce任务来执行Merge File操作。

在Map阶段,Hive会将每个分组内的文件作为输入,将它们读取到内存中,并按照一定的规则进行合并。

在Reduce阶段,Hive会将合并后的文件写入到HDFS中,并更新表的元数据信息。

四、Hive Concatenate的使用注意事项1. 数据备份在执行Concatenate操作之前,需要确保数据已经做好备份。

hive教程

hive教程

hive教程Hive是一个基于Hadoop的数据仓库基础设施工具,用于处理大规模数据集并进行数据存储和查询。

它提供了类似于SQL 的查询语言,使得用户可以通过简单的语句来运行复杂的MapReduce作业。

本教程将介绍Hive的一些基本概念和使用方法。

首先,需要了解Hive中的表这个概念。

表是Hive中用于存储数据的一种结构,类似于关系型数据库中的表。

在Hive中,表可以通过HiveQL语言来创建和操作。

下面是一个创建表的示例:```CREATE TABLE my_table (id INT,name STRING,age INT)ROW FORMAT DELIMITEDFIELDS TERMINATED BY '\t'STORED AS TEXTFILE;```上述语句创建了一个名为`my_table`的表,该表包含了id、name和age这三个字段。

表中的数据以制表符分隔,并且以文本文件的形式存储。

接下来,可以使用HiveQL语言来查询和操作表中的数据。

下面是一个查询表中数据的示例:```SELECT * FROM my_table WHERE age > 18;```上述语句会返回表`my_table`中年龄大于18的所有记录。

除了查询数据,Hive还支持在数据上执行其他操作,例如插入、更新和删除。

下面是一个插入数据的示例:```INSERT INTO my_table VALUES (1, 'John', 25);```上述语句会向表`my_table`中插入一条记录,该记录的id为1,name为John,age为25。

除了基本的表操作,Hive还提供了一些高级功能,例如分区和桶。

分区允许将表中的数据分割成多个部分,以便更高效地查询;桶则允许将表中的数据分成多个文件,以便更高效地存储和查询。

总结起来,Hive是一个用于处理大规模数据集的工具,它提供了类似于SQL的查询语言和一些高级功能。

hive 逻辑运算符

hive 逻辑运算符

hive 逻辑运算符Hive 逻辑运算符Hive 是一种开源的数据仓库基础架构,它通过使用 SQL 查询语言在大规模数据集上进行数据分析。

在 Hive 中,逻辑运算符用于对数据进行逻辑操作和运算。

本文将介绍 Hive 中常用的逻辑运算符,并详细解释它们的使用方法和作用。

1. 逻辑与运算符(AND)逻辑与运算符用于对多个条件进行逻辑与操作,只有当所有条件都为真时,结果才为真。

在 Hive 中,逻辑与运算符使用“AND”表示。

例如,我们可以使用逻辑与运算符来筛选出满足多个条件的数据行:SELECT * FROM table_name WHERE condition1 AND condition2 AND condition3;2. 逻辑或运算符(OR)逻辑或运算符用于对多个条件进行逻辑或操作,只需其中一个条件为真,结果就为真。

在 Hive 中,逻辑或运算符使用“OR”表示。

例如,我们可以使用逻辑或运算符来筛选出满足任意一个条件的数据行:SELECT * FROM table_name WHERE condition1 OR condition2 OR condition3;3. 逻辑非运算符(NOT)逻辑非运算符用于对一个条件进行逻辑非操作,将真变为假,将假变为真。

在 Hive 中,逻辑非运算符使用“NOT”表示。

例如,我们可以使用逻辑非运算符来筛选出不满足某个条件的数据行:SELECT * FROM table_name WHERE NOT condition;4. 等于运算符(=)等于运算符用于判断两个值是否相等。

在 Hive 中,等于运算符使用“=”表示。

例如,我们可以使用等于运算符来筛选出满足某个条件的数据行:SELECT * FROM table_name WHERE column = value;5. 不等于运算符(<>)不等于运算符用于判断两个值是否不相等。

在 Hive 中,不等于运算符使用“<>”表示。

hive 字符串转换为数字 浮点型

hive 字符串转换为数字 浮点型

hive 字符串转换为数字浮点型Hive是一个开源的数据仓库基础设施,它提供了类似于SQL的查询语言来分析大规模的数据集。

在Hive中,字符串转换为数字浮点型是一个常见的操作。

本文将介绍如何在Hive中进行字符串转换为数字浮点型的操作,以及一些常见的注意事项。

我们需要了解Hive中的数据类型。

Hive中有多种数据类型,包括整型、浮点型、字符串型等。

字符串转换为数字浮点型,需要使用Hive提供的内置函数进行转换。

下面是一个示例:```sqlSELECT CAST('3.14' AS FLOAT) AS result;```在上述示例中,我们使用了CAST函数将字符串'3.14'转换为浮点型。

结果将会返回一个浮点型的值3.14。

除了使用CAST函数,Hive还提供了其他一些内置函数来进行字符串转换为数字浮点型的操作。

例如,可以使用PARSE_FLOAT函数来解析字符串并返回浮点型的值。

下面是一个示例:```sqlSELECT PARSE_FLOAT('3.14') AS result;```在上述示例中,我们使用PARSE_FLOAT函数将字符串'3.14'解析为浮点型,并返回结果3.14。

需要注意的是,在进行字符串转换为数字浮点型的操作时,要确保字符串的格式正确。

如果字符串的格式不正确,将会导致转换失败。

例如,如果字符串包含非数字字符或者包含多个小数点,转换操作将会失败。

Hive中的字符串转换为数字浮点型的操作还可以应用于查询语句中的列。

例如,我们可以在SELECT语句中使用字符串转换为数字浮点型的操作来处理某个列的数据。

下面是一个示例:```sqlSELECT name, CAST(age AS FLOAT) AS age_float FROM students;```在上述示例中,我们将students表中的age列转换为浮点型,并将转换后的值存储在名为age_float的列中。

hive基础数据库操作以及分区、动态分区、分桶

hive基础数据库操作以及分区、动态分区、分桶

hive基础数据库操作以及分区、动态分区、分桶⼀、hive基础概念1、Hive是什么 Hive 是建⽴在 Hadoop 上的数据仓库基础构架。

它提供了⼀系列的⼯具,可以⽤来进⾏数据提取转化加载(ETL),这是⼀种可以存储、查询和分析存储在 Hadoop 中的⼤规模数据的机制。

Hive 定义了简单的类 SQL 查询语⾔,称为 HQL ,它允许熟悉 SQL 的⽤户查 询数据。

同时,这个语⾔也允许熟悉 MapReduce 开发者的开发⾃定义的 mapper 和 reducer 来处理内建的 mapper 和 reducer ⽆法完成的复杂的分析⼯作。

Hive是SQL解析引擎,它将SQL语句转译成M/R Job然后在Hadoop执⾏。

Hive的表其实就是HDFS的⽬录,按表名把⽂件夹分开。

如果是分区表,则分区值是⼦⽂件夹,可以直接在M/R Job⾥使⽤这些数据。

Hive相当于hadoop的客户端⼯具,部署时不⼀定放在集群管理节点中,可以放在某个节点上2、hive与传统数据库⽐较3、Hive的存储格式 Hive的数据存储基于Hadoop HDFS。

Hive没有专门的数据⽂件格式,常见的有以下⼏种。

TEXTFILE SEQUENCEFILE AVRO RCFILE ORCFILE PARQUET4、Hive操作客户端⼆、hive基础语法(hive基础语法与MySQL差不多)1、建库,删库; create database 库名;切换test1数据库: use test1;删库 DROP DATABASE IF EXISTS ycc ;(删除空数据库) DROP DATABASE IF EXISTS ycc CASCADE;(删除库之前清空库中表)2、建表;create [EXTERNAL] table students(id bigint,name string,age int comment,gender string,clazz string)PARTITIONED BY ( ⾮必选;创建分区表dt string)clustered by (userid) into 3000 buckets // ⾮必选;分桶⼦ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' // 必选;指定列之间的分隔符STORED AS rcfile // ⾮必选;指定⽂件的读取格式,默认textfile格式location '/testdata/'; //⾮必选;指定⽂件在hdfs上的存储路径,如果已经有⽂件,会⾃动加载,默认在hive的warehouse下CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name// 定义字段名,字段类型[(col_name data_type [COMMENT col_comment], ...)]// 给表加上注解[COMMENT table_comment]// 分区[PARTITIONED BY (col_name data_type [COMMENT col_comment], ...)]// 分桶[CLUSTERED BY (col_name, col_name, ...)// 设置排序字段升序、降序[SORTED BY (col_name [ASC|DESC], ...)] INTO num_buckets BUCKETS][// 指定设置⾏、列分隔符[ROW FORMAT row_format]// 指定Hive储存格式:textFile、rcFile、SequenceFile 默认为:textFile[STORED AS file_format]| STORED BY '' [ WITH SERDEPROPERTIES (...) ] (Note: only available starting with 0.6.0)]// 指定储存位置[LOCATION hdfs_path]// 跟外部表配合使⽤,⽐如:映射HBase表,然后可以使⽤HQL对hbase数据进⾏查询,当然速度⽐较慢[TBLPROPERTIES (property_name=property_value, ...)] (Note: only available starting with 0.6.0)[AS select_statement] (Note: this feature is only available starting with 0.5.0.) A、全部使⽤默认格式create table students(id bigint,name string,age int,gender string,clazz string)ROW FORMAT DELIMITED FIELDS TERMINATED BY','; //必选,指定列分隔符 B、指定location (这种⽅式也⽐较常⽤)create table students2(id bigint,name string,age int,gender string,clazz string)ROW FORMAT DELIMITED FIELDS TERMINATED BY','LOCATION '/input1'; //指定Hive表的数据的存储位置,⼀般在数据已经上传到HDFS,想要直接使⽤,会指定Location,通常Locaion会跟外部表⼀起使⽤,内部表⼀般使⽤默认的location C、指定存储格式create table students3(id bigint,name string,age int,gender string,clazz string)ROW FORMAT DELIMITED FIELDS TERMINATED BY','STORED AS rcfile; //指定储存格式为rcfile,inputFormat:RCFileInputFormat,outputFormat:RCFileOutputFormat,如果不指定,默认为textfile,注意:除textfile以外,其他的存储格式的数据都不能直接加载,需要使⽤从表加载的⽅式。

大数据系列-Hive入门与实战(ppt 69页)

大数据系列-Hive入门与实战(ppt 69页)
元数据库中 查询数据表 列表:
HDFS下对 应存储目 录:
Hive开发使用-Hive的数据模型
28
外部表
外部表指向已经在HDFS中存在的数据,可以创建Partition。它和内 部表在元数据的组织上是相同的,而实际数据的存储则有较大的差异。 内部表的创建过程和数据加载过程这两个过程可以分别独立完成,也可 以在同一个语句中完成,在加载数据的过程中,实际数据会被移动到数 据仓库目录中;之后对数据访问将会直接在数据仓库目录中完成。删除 表时,表中的数据和元数据将会被同时删除。而外部表只有一个过程, 加载数据和创建表同时完成(CREATE EXTERNAL TABLE ……LOCATION),实际数据是存储在LOCATION后面指定的 HDFS 路 径中,并不会移动到数据仓库目录中。当删除一个External Table时,仅 删除该链接。
大数据系列- Hive入门与实战
2
目录
一、 Hive简介 二、 Hive体系结构 三、 Hive工作机制 四、 Hive应用场景 五、 Hive安装部署 六、 Hive开发使用 七、 SparkSQL简介
Hive简介-Hive是什么?
3
Hive是构建在Hadoop之上的数据仓库平台
Hive是一个SQL解析引擎,它将SQL语句转译成 MapReduce作业并在Hadoop上执行。
Hive的优势-上百行MR程序与一条HQL的对比
16
Hive的应用场景-Hive的缺点
17
Hive的HQL表达能力有限:有些复杂运算用HQL不易表 达。 Hive效率低:Hive自动生成MR作业,通常不够智能; HQL调优困难,粒度较粗;可控性差。 针对Hive运行效率低下的问题,促使人们去寻找一种更快, 更具交互性的分析框架。 SparkSQL 的出现则有效的提高 了Sql在Hadoop 上的分析运行效率。

hive查询函数用法

hive查询函数用法

hive查询函数用法Hive是一个基于Hadoop的数据仓库基础架构,可以通过类似SQL的查询语言进行数据分析和处理。

Hive的查询函数是其功能强大的组成部分之一,可以用于数据的聚合、过滤、转换等操作。

以下是Hive查询函数的详细用法。

1.聚合函数:-COUNT:计算一列或行的数量。

-SUM:计算一列的总和。

-AVG:计算一列的平均值。

-MIN:获取一列的最小值。

-MAX:获取一列的最大值。

-GROUPBY:按照指定的列分组。

-HAVING:与GROUPBY一起使用,用于过滤分组后的结果。

2.字符串函数:-CONCAT:连接两个或多个字符串。

-SUBSTR:截取字符串的一部分。

-LENGTH:获取字符串的长度。

-TRIM:移除字符串中的空格。

-UPPER/LOWER:将字符串转换为大写/小写。

3.数学函数:-ABS:获取一个数的绝对值。

-ROUND/FLOOR/CEIL:舍入函数,分别向上/向下舍入或四舍五入。

-POWER/SQRT:求幂和平方根。

-MOD:获取两个数的模。

4.条件函数:-IF/ELSE:根据条件选择返回不同的结果。

- CASE WHEN THEN ELSE END:类似于switch语句,根据不同的条件返回不同的结果。

-COALESCE:返回传入参数列表中第一个非空值。

5.时间函数:-CURRENT_TIMESTAMP:获取当前时间戳。

-YEAR/MONTH/DAY/HOUR/MINUTE/SECOND:从时间戳中提取年、月、日、时、分、秒。

-DATE_FORMAT:根据指定格式格式化日期。

6.数组和集合函数:-ARRAY:创建一个数组。

-MAP:创建一个映射。

-COLLECT_SET/COLLECT_LIST:对指定列进行去重并返回集合。

7.数据类型转换函数:-CAST:将一个类型转换为另一个类型。

-TO_DATE/TO_UNIX_TIMESTAMP/UNIX_TIMESTAMP/DATE_FORMAT:用于日期和时间类型之间的转换。

hive常用的排序方法

hive常用的排序方法

hive常用的排序方法Hive是一个基于Hadoop的数据仓库基础架构,提供了一个用于处理大规模数据的查询和分析的高级语言。

在Hive中,排序操作是非常常见且重要的操作。

本文将详细介绍Hive中常用的排序方法,包括默认排序、单列排序、多列排序、自定义排序以及分区排序。

一、默认排序在Hive中,默认情况下,数据是按照加载顺序进行排序的。

Hive将数据按照加载的顺序存储在Hadoop分布式文件系统(HDFS)中,所以默认情况下,查询结果将会按照数据加载的顺序返回。

这种方式可以在某些场景下保持数据的物理存储顺序,提高查询性能。

二、单列排序要按照单个列进行排序,可以使用Hive中的ORDER BY子句。

ORDER BY 子句可以在SELECT语句的末尾添加,并指定要排序的列。

例如,要按照员工的工资进行排序,可以使用以下命令:SELECT * FROM employees ORDER BY salary;在执行这个命令之后,Hive将返回按照工资列进行升序排序的员工记录。

如果要按照降序排序,可以使用DESC关键字,如下所示:SELECT * FROM employees ORDER BY salary DESC;这将返回按照工资列进行降序排序的员工记录。

三、多列排序在Hive中,可以指定多个列进行排序。

当指定多列进行排序时,Hive将优先按照第一个列进行排序,然后再按照后续列进行排序。

例如,要按照员工的年龄和工资进行排序,可以使用以下命令:SELECT * FROM employees ORDER BY age, salary;这将返回按照员工的年龄进行升序排序,如果年龄相同,则按照工资进行升序排序的员工记录。

四、自定义排序尽管Hive提供了默认的升序和降序排序,但是有时候需要根据自定义的规则来排序数据。

为了实现自定义的排序,可以使用Hive中的ORDER BY 子句的自定义函数功能。

自定义函数允许用户编写自己的排序逻辑,并将其应用于特定的列。

hive regexp 正则表达式

hive regexp 正则表达式

一、介绍HiveHive是一个建立在Hadoop之上的数据仓库基础架构,它提供了一种类似于SQL的查询语言,称为HiveQL,可以用来查询和分析存储在Hadoop上的大规模数据集。

Hive的核心是基于Hadoop的MapReduce引擎,它可以处理PB级别的数据。

二、Hive中的正则表达式在Hive中,可以使用正则表达式来进行字符串匹配和提取操作。

正则表达式是一种强大的字符串模式匹配工具,可以在字符串中查找和提取符合某种模式的子串。

在Hive中,可以使用正则表达式进行如下操作:1. 字符串匹配:判断一个字符串是否符合某种模式2. 子串提取:从一个字符串中提取符合某种模式的子串3. 替换操作:用一个字符串替换符合某种模式的子串Hive提供了一系列内置的正则表达式函数,可以直接在HiveQL语句中调用这些函数来进行正则表达式操作。

三、Hive中的正则表达式函数1. regexp_extract(string, pattern, index):从字符串中提取符合某种模式的子串,index指定了提取的子串在匹配结果中的位置2. regexp_replace(string, pattern, replacement):用replacement 替换字符串中符合某种模式的子串3. regexp_like(string, pattern):判断字符串是否符合某种模式4. regexp_substr(string, pattern):返回字符串中符合某种模式的子串这些函数可以用于HiveQL语句中的select、where、group by等子句,可以方便地进行字符串匹配和提取操作。

四、示例假设有一个包含用户信息的表,其中有一列是em本人l位置区域,我们想要从em本人l位置区域中提取出用户名和域名部分。

可以使用regexp_extract函数来实现这个功能:```select em本人l, regexp_extract(em本人l, '([^]+)(.+)', 1) as username, regexp_extract(em本人l, '([^]+)(.+)', 2) as dom本人n from user_table;```这个HiveQL语句会从user_table中选取em本人l列,并且使用正则表达式'([^]+)(.+)'来提取出用户名和域名部分,然后分别放在username和dom本人n列中。

hive的limit用法

hive的limit用法

hive的limit用法Hive的Limit用法Hive是一种高效的数据仓库基础设施,用于处理大规模数据集。

它提供了丰富的操作符和函数,包括LIMIT,用于限制查询结果集的大小。

本文将介绍Hive的LIMIT用法,包括以下几个方面:•基本用法•使用OFFSET参数•结合ORDER BY使用1. 基本用法LIMIT关键字用于限制查询结果集的大小。

它被放置在查询语句的末尾,并紧跟着一个整数,表示返回的行数。

例如:SELECT col1, col2, ...FROM tableLIMIT n;上述查询将返回结果集中的前n行数据。

2. 使用OFFSET参数除了限制返回行数,LIMIT还可以通过使用OFFSET参数来指定从结果集的哪个位置开始返回数据。

OFFSET参数是一个非负整数,可以与LIMIT一起使用。

例如:SELECT col1, col2, ...FROM tableLIMIT n OFFSET m;上述查询将从结果集的第m+1行开始返回,返回n行数据。

3. 结合ORDER BY使用在一些情况下,可能需要对查询结果进行排序后再进行限制。

这时可以将LIMIT和ORDER BY结合起来使用。

例如:SELECT col1, col2, ...FROM tableORDER BY col1LIMIT n;上述查询将先按照col1列进行升序排序,然后返回排序后的结果集中的前n行数据。

总结•Hive的LIMIT关键字用于限制查询结果集的大小。

•可以使用LIMIT关键字指定返回的行数。

•可以使用LIMIT关键字和OFFSET参数指定返回数据的起始位置。

•可以将LIMIT和ORDER BY结合使用,先对结果集排序后再进行限制。

使用Hive的LIMIT可以方便地控制查询结果集的大小,从而提高查询效率和降低资源消耗。

上述介绍了LIMIT的基本用法以及与OFFSET和ORDER BY的结合使用,希望对你的数据分析工作有所帮助。

hive更新数据字段的语句 -回复

hive更新数据字段的语句 -回复

hive更新数据字段的语句-回复“Hive更新数据字段的语句”Hive是一个开源的数据仓库基础设施工具,它提供了类似于SQL的查询功能,可以用于大规模数据的处理和分析。

在Hive中更新数据字段需要使用特定的语句和步骤。

本文将一步一步回答如何使用Hive更新数据字段的问题。

第一步:了解表结构和数据在开始更新数据字段之前,首先需要了解表的结构和数据。

可以使用DESCRIBE语句查看表的结构,使用SELECT语句查看表中的数据。

例如,可以使用以下命令来查看表的结构和数据:DESCRIBE table_name;SELECT * FROM table_name;这些命令将显示表的列名、数据类型和数据示例。

第二步:更新数据字段一旦了解了表的结构和数据,就可以开始更新数据字段。

在Hive中,可以使用UPDATE语句来更新数据字段。

以下是一些更新数据字段的常见用法:1. 更新单个字段的值:UPDATE table_name SET column_name = new_value WHERE condition;在上述语句中,table_name是要更新的表名,column_name是要更新的字段名,new_value是要设置的新值,condition是一个可选的条件,用于指定要更新的记录。

例如,假设有一个名为students的表,其中包含学生的姓名和成绩。

要将学生“John”的成绩从80更新为90,可以使用以下命令:UPDATE students SET score = 90 WHERE name = 'John';这将更新名为“John”的学生记录的成绩字段。

2. 更新多个字段的值:UPDATE table_name SET column1 = value1, column2 = value2, ... WHERE condition;在上述语句中,可以使用逗号分隔的形式更新多个字段的值。

多个字段和值对之间使用等号(=)进行连接。

hive 数组类型

hive 数组类型

hive 数组类型Hive 数组类型Hive 是一个基于Hadoop 的数据仓库基础设施,提供了一种方便的方式来处理大规模的数据集。

在Hive 中,数组类型是一种常用的数据类型,用于存储具有相同数据类型的多个元素。

本文将介绍Hive 数组类型的定义、操作和用途。

一、数组类型的定义在Hive 中,数组类型是一种复合数据类型,可以存储多个相同数据类型的元素。

数组类型的定义方式为:array<数据类型>。

例如,定义一个包含整数元素的数组类型可以使用 array<int>。

二、数组类型的操作1. 创建数组在 Hive 中,可以使用 ARRAY() 函数来创建一个数组。

例如,创建一个包含整数元素的数组可以使用 ARRAY(1, 2, 3)。

2. 访问数组元素可以使用下标来访问数组中的元素。

数组的下标从1 开始,通过数组名和下标的组合来访问指定位置的元素。

例如,访问数组arr 中的第一个元素可以使用 arr[1]。

3. 数组的长度可以使用 SIZE() 函数来获取数组的长度。

例如,获取数组 arr 的长度可以使用 SIZE(arr)。

4. 数组的切片可以使用array[start:end] 的方式来获取数组的切片。

其中,start 表示起始下标,end 表示结束下标,切片范围包括start 和end。

例如,获取数组 arr 中的前三个元素可以使用 arr[1:3]。

5. 数组的拼接可以使用CONCAT() 函数来将多个数组拼接成一个数组。

例如,将数组arr1 和数组arr2 拼接成一个新数组可以使用CONCAT(arr1, arr2)。

6. 数组的去重可以使用DISTINCT() 函数来去除数组中的重复元素。

例如,去除数组 arr 中的重复元素可以使用 DISTINCT(arr)。

三、数组类型的用途1. 存储多个值数组类型在Hive 中可以用来存储多个值,方便处理多值情况。

例如,可以使用数组类型来存储用户的兴趣爱好、商品的标签等。

hive 字段文本类型

hive 字段文本类型

hive 字段文本类型Hive字段文本类型简介Hive是一种基于Hadoop的数据仓库基础架构,它提供了方便的数据查询和分析功能。

在Hive中,字段文本类型是用于存储字符串数据的一种数据类型。

本文将对Hive字段文本类型进行详细介绍。

一、Hive字段文本类型的分类Hive字段文本类型主要分为以下几种:1. STRING:STRING类型是Hive中最常用的文本类型,用于存储任意长度的字符串。

它可以存储包括字母、数字、特殊字符在内的所有字符。

2. CHAR:CHAR类型用于存储固定长度的字符串。

在创建表时,需要指定字符串的长度。

如果插入的字符串长度小于指定长度,Hive 会在后面自动补齐空格。

3. VARCHAR:VARCHAR类型也用于存储可变长度的字符串,但与CHAR类型不同,它不会在插入时自动补齐空格。

在创建表时,需要指定字符串的最大长度。

4. BINARY:BINARY类型用于存储二进制数据,例如图片、音频等文件。

它可以存储任意长度的二进制数据。

二、Hive字段文本类型的使用在Hive中,可以使用CREATE TABLE语句创建包含字段文本类型的表,例如:CREATE TABLE employee (id INT,name STRING,address CHAR(50),email VARCHAR(100),photo BINARY);在上述示例中,employee表包含了id、name、address、email和photo等字段,它们分别使用了不同的文本类型。

三、Hive字段文本类型的操作Hive字段文本类型同样支持常见的数据操作,例如插入数据、查询数据和更新数据等。

下面是一些常用的操作示例:1. 插入数据:INSERT INTO employee (id, name, address, email, photo) VALUES (1, '张三', '北京市', '********************', 'photo1.jpg');2. 查询数据:SELECT * FROM employee WHERE name = '张三';3. 更新数据:UPDATE employee SET address = '上海市' WHERE id = 1;四、Hive字段文本类型的注意事项在使用Hive字段文本类型时,需要注意以下几点:1. 字符串长度:在创建表时,需要根据实际需求合理设置字符串的最大长度,避免存储不必要的空格或截断字符串。

hive的数组类型

hive的数组类型

hive的数组类型Hive的数组类型Hive是一个基于Hadoop的数据仓库基础架构,用于处理大规模数据集。

Hive提供了一种类似于SQL的查询语言,称为HiveQL,使得用户能够轻松地处理和分析结构化数据。

其中,Hive的数组类型是一种非常重要的数据类型之一。

1. 数组类型的定义在Hive中,数组类型是一种有序的集合,它可以包含多个相同类型的元素。

数组类型的定义很简单,只需要在数据类型后面加上方括号即可。

例如,INT[]表示一个整数类型的数组。

2. 数组类型的操作Hive提供了一系列操作符和函数来操作数组类型。

下面是一些常用的操作:- 获取数组中的元素:可以使用下标来获取数组中的元素,下标从0开始计数。

例如,arr[0]表示获取数组arr中的第一个元素。

- 获取数组的长度:可以使用函数size()来获取数组的长度。

例如,size(arr)表示获取数组arr的长度。

- 添加元素到数组:可以使用函数concat()将一个或多个元素添加到数组中。

例如,concat(arr, 1, 2, 3)表示将元素1、2和3添加到数组arr中。

- 删除数组中的元素:可以使用函数slice()删除数组中的元素。

例如,slice(arr, 1, 2)表示删除数组arr中下标为1和2的元素。

- 数组的连接和拆分:可以使用函数array()将多个数组连接在一起,使用函数explode()将一个数组拆分成多行。

例如,array(arr1, arr2)表示将数组arr1和arr2连接在一起,explode(arr)表示将数组arr拆分成多行。

3. 数组类型的应用场景数组类型在Hive中具有广泛的应用场景,以下是一些常见的应用场景:- 多值属性:例如,一个用户可能有多个电话号码,这时可以使用数组类型来存储电话号码。

- 日志分析:例如,一个用户的行为日志可能包含多个事件,这时可以使用数组类型来存储用户的行为事件。

- 推荐系统:例如,一个用户可能对多个商品感兴趣,这时可以使用数组类型来存储用户对商品的喜好程度。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Hive 基础(2):库、表、字段、交互式查询的基本操作•1、命令行操作•2、表操作•3、列操作•4、查看变量•5、一个完整的建库、表例子•6、常用语句示例•7、Refer:1、命令行操作(1)打印查询头,需要显示设置:set hive.cli.print.header=true;(2)加"--",其后的都被认为是注释,但CLI 不解析注释。

带有注释的文件只能通过这种方式执行:hive -f script_name(3)-e后跟带引号的hive指令或者查询,-S去掉多余的输出:hive -S -e "select * FROM mytable LIMIT 3" > /tmp/myquery (4)遍历所有分区的查询将产生一个巨大的MapReduce作业,如果你的数据集和目录非常多,因此建议你使用strict模型,也就是你存在分区时,必须指定where语句hive> set hive.mapred.mode=strict;(5)显示当前使用数据库set hive.cli.print.current.db=true;(6)设置Hive Job 优先级set mapred.job.priority=VERY_HIGH | HIGH | NORMAL | LOW | VERY_LOW(VERY_LOW=1,LOW=2500,NORMAL=5000,HIGH=7500,VERY _HIGH=10000)set mapred.job.map.capacity=M设置同时最多运行M个map 任务set mapred.job.reduce.capacity=N设置同时最多运行N个red uce任务(7)Hive 中的Mapper个数的是由以下几个参数确定的:mapred.min.split.size ,mapred.max.split.size ,dfs.block.siz esplitSize = Math.max(minSize, Math.min(maxSize, blockSiz e));map个数还与inputfilles的个数有关,如果有2个输入文件,即使总大小小于blocksize,也会产生2个mapmapred.reduce.tasks用来设置reduce个数。

2、表操作(1)查看某个表所有分区SHOW PARTITIONS ext_trackflow查询具体某个分区SHOW PARTITIONS ext_trackflow PARTITION(statDate='20140529 ');(2)查看格式化的完整表结构desc formatted ext_trackflow;DESCRIBE EXTENDED ext_trackflow;(3)删除分区:分区的元数据和数据将被一并删除,但是对于扩展表则只删除元数据ALTER TABLE ext_trackflow DROP PARTITION (statDate='2014052 9');(4)查询是外部表还是内部表DESCRIBE EXTENDED tablename(5)复制表结构CREATE EXTERNAL TABLE IF NOT EXISTS mydb.employees3 LIKE mydb.employeesLOCATION '/path/to/data';Note:如果你忽略关键字EXTERNAL,那么将依据employees 是外部还是内部,如果加了那么一定是EXTERNAL,并要LOCATION(6)为内部表某个分区导入数据,Hive将建立目录并拷贝数据到分区当中LOAD DATA LOCAL INPATH '${env:HOME}/california-employees' INTO TABLE employeesPARTITION (country = 'US', state = 'CA');(7)为外部表某个分区添加数据ALTER TABLE log_messages ADD IF NOT EXISTS PARTITION(yea r = 2012, month = 1, day = 2)LOCATION 'hdfs://master_server/data/log_messages/2012/01/02'; Note:Hive并不关心分区,目录是否存在,是否有数据,这会导致没有查询结果(8)修改表:在任何时候你都可以修改表,但是你仅仅修改的是表的元数据,都实际数据不会造成任何影响例如更改分区指定位置,这个命令不会删除旧的数据ALTER TABLE log_messages PARTITION(year = 2011, month = 1 2, day = 2)SET LOCATION 's3n://ourbucket/logs/2011/01/02';(9)更改表属性ALTER TABLE log_messages SET TBLPROPERTIES ('notes' = 'The process id is no longer captured; this column is always NULL');(10)更改存储属性ALTER TABLE log_messagesPARTITION(year = 2012, month = 1, day = 1)SET FILEFORMAT SEQUENCEFILE;Note:如果table是分区的话那么partition是必须的(11)指定新的SerDeALTER TABLE table_using_JSON_storageSET SERDE 'com.example.JSONSerDe'WITH SERDEPROPERTIES ('prop1' = 'value1','prop2' = 'value2');Note:SERDEPROPERTIE解释SERDE用的何种模型,属性值和名称都为字符串,方便告诉用户,为自己指定SERDE并且应用于什么模型为当前SERDE设定ALTER TABLE table_using_JSON_storageSET SERDEPROPERTIES ('prop3' = 'value3','prop4' = 'value4');(12)改变存储属性ALTER TABLE stocksCLUSTERED BY (exchange, symbol)SORTED BY (symbol)INTO 48 BUCKETS;(13)复杂更改表语句:为各种不同的操作添加hook ALTER TABLE …TOUCHALTER TABLE log_messages TOUCHPARTITION(year = 2012, month = 1, day = 1);典型的应用场景就是当分区有改动的时候,那么将触发hive -e 'ALTER TABLE log_messages TOUCH PARTITION(year = 2012, month = 1, day = 1);'(14)ALTER TABLE …ARCHIVE PARTITION 捕获分区文件到Hadoo p archive file也就是HARALTER TABLE log_messages ARCHIVEPARTITION(year = 2012, month = 1, day = 1);(只可以用在被分区的表)(15)保护分区不被删除和查询ALTER TABLE log_messagesPARTITION(year = 2012, month = 1, day = 1) ENABLE NO_DRO P;ALTER TABLE log_messagesPARTITION(year = 2012, month = 1, day = 1) ENABLE OFFLINE;Note:与ENABLE对应的是DISABLE,不能应用在未被分区的表(16)按正条件(正则表达式)显示表hive> SHOW TABLES '.*s';(17)外部表、内部表互转alter table tablePartition set TBLPROPERTIES ('EXTERNAL'='TRUE '); //内部表转外部表alter table tablePartition set TBLPROPERTIES ('EXTERNAL'='FALSE '); //外部表转内部表(18)分区与分桶:partition(分区:按目录保存文件,每个partition对应一个目录)例如:1 2 3 4 5 6 7 8 91011 CREATE EXTERNAL TABLE table1 (column1 STRING,column2 STRING,column3 STRING,)PARTITIONED BY (dt STRING)ROW FORMAT DELIMITED FIELDS TERMINATED BY '|'STORED AS TEXTFILE;ALTER TABLE table1 ADD IF NOT EXISTS PARTITION (dt=20090105); ALTER TABLE table1 ADD IF NOT EXISTS PARTITION (dt=20090102); ALTER TABLE table1 ADD IF NOT EXISTS PARTITION (dt=20081231);bucket(分桶,对指定列作hash,每个bucket对应一个文件)1 2 3 4 5 6 7 8 9101112 CREATE TABLE VT_NEW_DATA(column1 STRING,column2 STRING,column3 STRING, )CLUSTERED BY (column1)SORTED BY (column1)INTO 48 BUCKETSROW FORMAT DELIMITEDFIELDS TERMINATED BY '|'LINES TERMINATED BY '\n'13 STORED AS RCFILE;3、列操作(1)重命名列,更改位置,类型和注释ALTER TABLE log_messagesCHANGE COLUMN hms hours_minutes_seconds INT COMMENT 'The hours, minutes, and seconds part of the timest amp'AFTER severity;更改名称: new column old column typecomment不是必须的,你可以添加注释AFTER用于更改字段位置仅修改了元数据并未对源data做任何改动(2)添加新列ALTER TABLE log_messages ADD COLUMNS (app_name STRING COMMENT 'Application name',session_id LONG COMMENT 'The current session id');(3)删除和替换列:慎用ALTER TABLE table_name ADD|REPLACE COLUMNS (col_name da ta_type [COMMENT col_comment], ...)ADD是代表新增一字段,字段位置在所有列后面(partition列前) REPLACE则是表示替换表中所有字段。

相关文档
最新文档