hive常用命令总结(亲测有效)

末蓝、 2023-01-23 01:57 257阅读 0赞
  1. 死,这是第二遍总结了,第一遍刚总结完,就被臭宝给直接退出了,无语,再来一次。

首先简单的说一下hive是个什么东西,能用来在做什么。hive其实就是一个数据库,在大数据时代,常用来构建数据仓库。简称数仓,当然,我以前也做过数据仓库的项目,但是都是用oracle来写的。既然是数据库,那么也离不开sql,hive中的sql又叫hql,所以排除API编写和底层原理的话,学习起来的学习成本不是很高。那么就再总结一次hive常用命令吧,之余hive的性能调优,之前也写了一部分,有兴趣的伙伴可以去瞅瞅哈。
就从最简单的增删改查来写吧。

  1. 1 创建数据库
  2. 有两种创建方法,如果不指定创建路径的话,会默认存放再HDFS
  3. 1.1 默认创建数据库
  4. create database db_hive;

默认创建hive数据库存放的位置
在这里插入图片描述
在这里插入图片描述

  1. 1.2 指定路径创建数据库:
  2. create database db_hive2 location '/db_hive2.db';

效果如下:
在这里插入图片描述

  1. 1.3 查看创建数据库的信息,包括存储位置等;
  2. show create database db_hive;

在这里插入图片描述

  1. 1.4 修改数据库信息(暂不支持修改数据库名称):
  2. 用户可以使用ALTER DATABASE命令为某个数据库的DBPROPERTIES设置键-值对属性值,来描述这个数据库的属性信息。数据库的其他元数据信息都是不可更改的,包括数据库名和数据库所在的目录位置。
  3. 修改键值对信息
  4. hive (default)> alter database db_hive set dbproperties('createtime'='20170830');
  5. 查看键值对信息
  6. describe database extended db_hive;

在这里插入图片描述

  1. 1.5 查看已创建的数据库
  2. 显示数据库
  3. show databases;
  4. 过滤显示数据库
  5. show databases like 'db_*';

在这里插入图片描述

  1. 1.6 使用切换某个数据库
  2. use db_hive;
  3. 1.7 删除数据库
  4. drop databases db_hive;
  5. 如果数据库不为空,可以进行强制删除,命令如下
  6. drop databases db_hive cascade;
  7. 2 数据表的操作
  8. 2.1 创建表:
  9. CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name
  10. [(col_name data_type [COMMENT col_comment], ...)]
  11. [COMMENT table_comment]
  12. [PARTITIONED BY (col_name data_type [COMMENT col_comment], ...)]
  13. [CLUSTERED BY (col_name, col_name, ...)
  14. [SORTED BY (col_name [ASC|DESC], ...)] INTO num_buckets BUCKETS]
  15. [ROW FORMAT row_format]
  16. [STORED AS file_format]
  17. [LOCATION hdfs_path]
  18. 字段解释说明
  19. 1CREATE TABLE 创建一个指定名字的表。如果相同名字的表已经存在,则抛出异常;用户可以用 IF NOT EXISTS 选项来忽略这个异常。
  20. 2EXTERNAL关键字可以让用户创建一个外部表,在建表的同时指定一个指向实际数据的路径(LOCATION),Hive创建内部表时,会将数据移动到数据仓库指向的路径;若创建外部表,仅记录数据所在的路径,不对数据的位置做任何改变。在删除表的时候,内部表的元数据和数据会被一起删除,而外部表只删除元数据,不删除数据。
  21. 3COMMENT:为表和列添加注释。
  22. 4PARTITIONED BY创建分区表
  23. 5CLUSTERED BY创建分桶表
  24. 6SORTED BY不常用
  25. 7ROW FORMAT
  26. DELIMITED [FIELDS TERMINATED BY char] [COLLECTION ITEMS TERMINATED BY char]
  27. [MAP KEYS TERMINATED BY char] [LINES TERMINATED BY char]
  28. | SERDE serde_name [WITH SERDEPROPERTIES (property_name=property_value, property_name=property_value, ...)]
  29. 用户在建表的时候可以自定义SerDe或者使用自带的SerDe。如果没有指定ROW FORMAT 或者ROW FORMAT DELIMITED,将会使用自带的SerDe。在建表的时候,用户还需要为表指定列,用户在指定表的列的同时也会指定自定义的SerDeHive通过SerDe确定表的具体的列的数据。
  30. 8STORED AS 指定存储文件类型
  31. 常用的存储文件类型:SEQUENCEFILE(二进制序列文件)、TEXTFILE(文本)、RCFILE(列式存储格式文件)
  32. 如果文件数据是纯文本,可以使用STORED AS TEXTFILE。如果数据需要压缩,使用 STORED AS SEQUENCEFILE
  33. 9LOCATION :指定表在HDFS上的存储位置。
  34. 10LIKE允许用户复制现有的表结构,但是不复制数据。
  35. 2.2 创建表的时候也有两种表模式,一种是管理表(内部表),还有一种是外部表
  36. 简单的说下这两种表的区别吧
  37. 默认创建的表都是所谓的管理表,有时也被称为内部表。因为这种表,Hive会(或多或少地)控制着数据的生命周期。Hive默认情况下会将这些表的数据存储在由配置项hive.metastore.warehouse.dir(例如,/user/hive/warehouse)所定义的目录的子目录下。 当我们删除一个管理表时,Hive也会删除这个表中数据。管理表不适合和其他工具共享数据。如果是本地做测试的话,那么可以选择这样的方式来创建。简单的说,一旦删除内部表的话,连带表的内容也会被删除。反之,外部表会指定存放路径,即使被删除了,也只是删除了这个表的元数据信息,而表的内容不会被删除。
  38. 查询表的详细信息:568
  39. desc formatted db_hive;

在这里插入图片描述

发表评论

表情:
评论列表 (有 0 条评论,257人围观)

还没有评论,来说两句吧...

相关阅读