查看Hive中表的所有信息(结构、字段、存放路径、属性)

博客介绍了Hive中多种表信息的查询方法,包括使用show create table查询创建表信息、desc查询表的字段信息、desc formatted查看表的详细属性信息、describe extended查看表的详细信息,以及show partitions查看表的partitions信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

1. 查询创建表信息(show create table)

2. 查询表的字段信息(desc)

3. 查看表的详细属性信息(desc formatted)

4.  查看表的详细信息(describe extended)

5. 查看表的partitions信息(show partitions )


1. 查询创建表信息(show create table)

里面有delemited信息

hive> show create table alpha_sales_staff_info;
OK
CREATE TABLE `alpha_sales_staff_info`(
  `staff` string COMMENT '客服pin',
  `mall_id` string COMMENT '服务商ID',
  `brand_name` string COMMENT '品牌名称',
  `category` string COMMENT '品类名称',
  `level` string COMMENT '客服评级',
  `group` string COMMENT 'AB test组别')
PARTITIONED BY (
  `dt` string)
ROW FORMAT DELIMITED
  FIELDS TERMINATED BY ' '
  LINES TERMINATED BY '\n'
STORED AS INPUTFORMAT
  'org.apache.hadoop.mapred.TextInputFormat'
OUTPUTFORMAT
  'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION
  'hdfs://ns7/user/mart_ai/app.db/alpha_sales_staff_info'
TBLPROPERTIES (
  'mart_name'='mart_ai',
  'transient_lastDdlTime'='1542188102')
Time taken: 0.149 seconds, Fetched: 21 row(s)


2. 查询表的字段信息(desc)

hive> desc alpha_sales_staff_info;
OK
staff                   string                  客服pin
mall_id                 string                  服务商ID
brand_name              string                  品牌名称
category                string                  品类名称
level                   string                  客服评级
group                   string                  AB test组别
dt                      string
 
# Partition Information
# col_name                data_type               comment
 
dt                      string
Time taken: 0.053 seconds, Fetched: 12 row(s)


3. 查看表的详细属性信息(desc formatted)


hive> desc formatted alpha_sales_staff_info;

# col_name                data_type               comment
 
staff                   string                  客服pin
mall_id                 string                  服务商ID
brand_name              string                  品牌名称
category                string                  品类名称
level                   string                  客服评级
group                   string                  AB test组别
 
# Partition Information
# col_name                data_type               comment
 
dt                      string
 
# Detailed Table Information
Database:               app
Owner:                  mart_ai
CreateTime:             Wed Nov 14 17:35:02 CST 2018
LastAccessTime:         UNKNOWN
Retention:              0
Location:               hdfs://ns7/user/mart_ai/app.db/alpha_sales_staff_info
Table Type:             MANAGED_TABLE
Table Parameters:
    mart_name               mart_ai
    transient_lastDdlTime    1542188102
 
# Storage Information
SerDe Library:          org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
InputFormat:            org.apache.hadoop.mapred.TextInputFormat
OutputFormat:           org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat
Compressed:             No
Num Buckets:            -1
Bucket Columns:         []
Sort Columns:           []
Storage Desc Params:
    field.delim
    line.delim              \n
    serialization.format
Time taken: 0.082 seconds, Fetched: 38 row(s)


4.  查看表的详细信息(describe extended)

hive> describe extended alpha_sales_staff_info;
OK
staff                   string                  客服pin
mall_id                 string                  服务商ID
brand_name              string                  品牌名称
category                string                  品类名称
level                   string                  客服评级
group                   string                  AB test组别
dt                      string
 
# Partition Information
# col_name                data_type               comment
 
dt                      string
 
Detailed Table Information    
Table(tableName:alpha_sales_staff_info, dbName:app, owner:mart_ai, createTime:1542188102, lastAccessTime:0, retention:0, sd:StorageDescriptor(cols:[FieldSchema(name:staff, type:string, comment:客服pin), FieldSchema(name:mall_id, type:string, comment:服务商ID), FieldSchema(name:brand_name, type:string, comment:品牌名称), FieldSchema(name:category, type:string, comment:品类名称), FieldSchema(name:level, type:string, comment:客服评级), FieldSchema(name:group, type:string, comment:AB test组别), FieldSchema(name:dt, type:string, comment:null)], location:hdfs://ns7/user/mart_ai/app.db/alpha_sales_staff_info, inputFormat:org.apache.hadoop.mapred.TextInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe, parameters:{serialization.format= , field.delim= , line.delim=
}), bucketCols:[], sortCols:[], parameters:{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storedAsSubDirectories:false), partitionKeys:[FieldSchema(name:dt, type:string, comment:null)], parameters:{mart_name=mart_ai, transient_lastDdlTime=1542188102}, viewOriginalText:null, viewExpandedText:null, tableType:MANAGED_TABLE)
Time taken: 0.078 seconds, Fetched: 15 row(s)


5. 查看表的partitions信息(show partitions )

#a.表不是partition表

hive> show partitions dpc_test;
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. Table dpc_test is not a partitioned table


#b. 表有partition

hive> show partitions alpha_sales_staff_info;
OK
dt=v1
dt=v2
dt=v3
Time taken: 0.075 seconds, Fetched: 3 row(s)


 

### Hive 表 DML 操作教程 #### 加载文件数据到表 Hive 支持通过命令将外部文件中的数据加载至指定的内部或外部表中。此过程不会移动源文件,而是创建指向这些文件位置的新元数据条目。 ```sql LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename [PARTITION (partcol1=val1, partcol2=val2 ...)] ``` 例如: ```sql LOAD DATA LOCAL INPATH '/home/user/datafile.txt' OVERWRITE INTO TABLE mytable; ``` 这条语句会把本地路径 `/home/user/datafile.txt` 中的数据覆盖写入 `mytable` 表内[^2]。 #### 查询结果插入到表 除了直接加载文件外,还可以利用 SQL 查询的结果来填充目标表。这允许更灵活地处理现有数据集并将其转换为目标结构所需的形式。 ##### 插入静态分区 当向已定义好分区字段的目标表插入新记录时,可以通过硬编码的方式指明具体要存放在哪个分区内。 ```sql INSERT INTO TABLE target_table PARTITION(partition_column='partition_value') SELECT * FROM source_table WHERE condition; ``` ##### 动态插入分区 对于多级分区的支持使得可以在运行时决定每一条记录应该被分配给哪一个具体的子分区下。 ```sql SET hive.exec.dynamic.partition=true; -- 启用动态分区功能 SET hive.exec.dynamic.partition.mode=nonstrict; INSERT INTO TABLE target_table PARTITION(partition_columns) SELECT non_partitioned_columns, partition_values FROM source_table; ``` 以上配置确保了即使某些分区不存在也会自动创建它们。 #### 使用 SQL 语句插入单行或多行值 类似于传统的关系型数据库管理系统,在 Hive 中同样能够采用标准的 INSERT...VALUES 形式的指令完成少量固定数量的数据项录入工作。 ```sql INSERT INTO TABLE table_name VALUES(value_list), ..., (value_list); ``` 比如: ```sql INSERT INTO TABLE employees VALUES(1,'Alice','Sales'), (2,'Bob','Engineering'); ``` 该例子展示了如何一次性向名为 `employees` 的表里增加两条新的员工信息记录。 #### 更新和删除数据 值得注意的是,只有启用了 ACID 特性的表才允许执行更新 (`UPDATE`) 和 删除 (`DELETE`) 操作。这是因为这类变更涉及到复杂的并发控制机制以及日志管理等问题,而这些都是为了保障数据的一致性和可靠性所必需的设计考量。 - **更新** ```sql UPDATE table_name SET column=value[,column=value,...] [WHERE conditions]; ``` - **删除** ```sql DELETE FROM table_name [WHERE conditions]; ``` 上述两个命令分别用于修改符合条件的已有记录属性或是彻底移除不想要的部分。不过要注意,如果省略掉 `WHERE` 子句,则意味着整个表里的所有行都会受到影响[^3]。 #### 导出查询结果到文件系统 最后一种常见的场景是从 Hive 数据库读取特定的信息片段,并保存成本地磁盘上的平面文件形式供后续分析工具进一步加工使用。 ```sql INSERT OVERWRITE DIRECTORY 'hdfs_directory_path' ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' STORED AS TEXTFILE SELECT columns FROM tables; ``` 这段脚本说明了怎样选取若干列构成最终输出的内容布局;同时设置了字段间的定界符为制表符(`\t`),并且选择了文本作为存储格式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值