Hive创建表语句

本文讲解了Hive中的表结构,涉及外部表、内部表、分区表、临时表和视图,强调了视图随源表变化的特点,以及HDFS的作用。

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

Hive创建表语句

外部表

--订单来源表
CREATE EXTERNAL TABLE IF NOT EXISTS ODS.ORDER_INFO
(
ORDER_ID STRING, 
ORDER_PRICE STRING,
ORDER_USER STRING,
...
...
)
ROW FORMAT delimited DELIMITED FIELDS TERMINATED BY ','
location '/home/hadoop/hive/warehouse/order_info.txt'
STORED AS TEXTFILE ;

针对内外部表,一般外部表指定location,内部一般默认。

内部表

--省份维度表
CREATE TABLE IF NOT EXISTS DIM.DIM_PROVINCE
(
PROVINCE_NO STRING, 
PROVINCE_NAME STRING
)
ROW FORMAT delimited DELIMITED FIELDS TERMINATED BY '\t'
STORED AS TEXTFILE ;

分区表

CREATE TABLE PROVINCE_TOTAL_MONEY
(
PROVINCE STRING,
SUM_MONEY DECIMAL(20,4)
)
PRRTITIONED BY (MONTH STRING)
;

分区字段可以有多个。

临时表

CREATE TEMPORARY TABLE TMP_ORDER_INFO AS SELECT * FROM APP.ORDER_INFO WHERE 1=1;

视图

CREATE VIEW VIEW_ORDER_INFO AS SELECT * FROM APP.ORDER_INFO WHERE 1=1;

视图随着源表的数据动态变化,hdfs指定不变。

### Hive 创建表语示例 以下是基于提供的引用内容和专业知识整理的关于 Hive 创建的相关语法及示例: #### 1. 基本创建 Hive 中可以使用 `CREATE TABLE` 来定义一张新。以下是一个简单的例子,展示如何创建一个包含字符串和整数列的基本。 ```sql CREATE TABLE IF NOT EXISTS employees ( id INT, name STRING, salary FLOAT ); ``` 此命令会创建名为 `employees` 的,其中包含三个字段:`id`(整型)、`name`(字符串)和 `salary`(浮点型)。如果该已经存在,则不会重复创建[^1]。 --- #### 2. 外部创建 外部允许数据存储在 HDFS 上而不受 Hive 控制。当删除外部时,仅移除元数据而保留实际数据文件。 ```sql CREATE EXTERNAL TABLE logs ( log_time TIMESTAMP, message STRING ) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' LOCATION '/user/hadoop/logs'; ``` 在此示例中,日志记录被保存到指定路径 `/user/hadoop/logs` 下,并通过 `\t` 制符分割各字段[^4]。 --- #### 3. 使用复杂数据类型 除了基本数据类型外,还可以利用数组 (`ARRAY`)、映射 (`MAP`) 和结构体 (`STRUCT`) 定义更复杂的模式。 ```sql CREATE TABLE emp ( userid BIGINT, emp_name ARRAY<STRING>, emp_date MAP<STRING, DATE>, other_info STRUCT<department:STRING, gender:STRING> ) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' COLLECTION ITEMS TERMINATED BY ',' MAP KEYS TERMINATED BY ':'; ``` 上述脚本展示了如何构具有嵌套属性的工作人员信息。注意这里还设置了不同层次上的分隔符配置来解析复合对象的内容[^3]。 --- #### 4. 加载本地数据至 Hive 一旦完成格设计之后,通常还需要向其填充初始资料集。下面给出了一种方法——从本地磁盘上传文档并覆盖目标分区内的现有条目。 ```sql LOAD DATA LOCAL INPATH '/path/to/local/file.csv' OVERWRITE INTO TABLE my_table PARTITION(year=2023, month=7); ``` 这条 SQL 把位于客户端机器上的 CSV 文件导入数据库系统内部的同时指定了特定的时间片段作为附加条件之一[^2]。 --- #### 5. 时间戳与日期处理注意事项 值得注意的是,在操作涉及时间维度的信息单元时候,请确保遵循正确的转换规则因为只有某些类别之间才互相兼容比如 Date 类型只能同 Timestamp 或者 String 形式相互转变[^3]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值