hive外部表/内部表路径知识点

1.hive创建外部表或者管理表是指定的位置信息是数据路径:
create external table location ‘/user/externalhive/location/dir’
这里只定义到了目录级别,真正查询数据的时候,数据是从该目录下的所有文件中查询出来的

2.load data local inpath ‘/data/to/inputdir’ into table xx
partition(dt=‘20210612’) 这里导入数据的时候指定导入的目录也是目录,这个语句会把该目录下的文件导入管理表/内部表的对应目录中,这样查询该管理表的时候就可以查询到数据

3.hive创建分区外部表:
create external table 这里不需要指定location路径,路径是通过随后的 alter table add partiton(dt=‘20210621’) location ‘hdfs://data/path/20210621’ 指定的

<think>好的,用户想了解如何在Hive中创建表,包括语法和示例。首先,我需要从提供的引用中找到相关的信息。引用[1]提到了Hive创建表命令和示例,还有表设计的最佳实践。引用[3]中给出了CREATE DATABASE和SELECT的语法,可能也包含CREATE TABLE的信息。 接下来,我应该先整理Hive创建表的基本语法结构。根据引用[1]和[3],CREATE TABLE语句的基本结构应该是CREATE TABLE [IF NOT EXISTS]表名,然后是列定义、分区、分桶、存储格式等。需要包括必选参数如表名、列名和数据类型,以及可选参数如分区、存储格式、位置等。 然后,用户可能需要一个简单的示例,比如创建一个包含id、name、age字段的员工表。引用[1]中的示例可能类似,可以结合这个结构来写。此外,用户可能还想了解更复杂的例子,比如分区表。引用中提到了Hive的分区功能,所以需要展示如何按日期或部门分区。 还要注意不同的文件格式,比如TEXTFILE、ORC、PARQUET,这些在引用[1]或[3]里可能有提到。需要说明如何指定存储格式,以及如何设置分隔符,例如使用ROW FORMAT DELIMITED FIELDS TERMINATED BY ','。 另外,临时表也是一个重要点,引用[1]提到Hive临时表,应该在示例中包含CREATE TEMPORARY TABLE的用法。同时,外部表内部表的区别,EXTERNAL关键字的使用,也是创建表时的关键考虑因素,这可能在引用[1]的最佳实践中提到。 需要确保语法正确,比如使用IF NOT EXISTS来避免重复创建,指定STORED AS格式,以及LOCATION参数。可能还需要提到分桶(CLUSTERED BY)和排序(SORTED BY)的用法,但用户的问题可能更关注基础,所以先给出常见用法。 最后,生成相关问题时要围绕创建表的扩展内容,比如分区表的优势、内部外部表的区别、文件格式的选择以及最佳实践。这些问题应该帮助用户进一步理解Hive表创建的相关知识。</think>### Hive 创建表语法及示例 #### 1. 基础语法 Hive 创建表的通用语法如下: ```sql CREATE [TEMPORARY][EXTERNAL] TABLE [IF NOT EXISTS] [db_name.]table_name ( column_name data_type [COMMENT '列注释'], ... ) [COMMENT '表注释'] [PARTITIONED BY (col_name data_type [COMMENT '分区列注释'], ...)] -- 分区表 [CLUSTERED BY (col_name, ...) [SORTED BY (col_name [ASC|DESC], ...)] INTO num_buckets BUCKETS] -- 分桶表 [ROW FORMAT row_format] -- 数据格式定义 [STORED AS file_format] -- 存储格式 [LOCATION 'hdfs_path'] -- 存储路径 [TBLPROPERTIES (property_name=property_value, ...)] -- 表属性 ``` #### 2. 必选参数说明 - **`column_name data_type`**:定义列名和数据类型(如`INT`, `STRING`, `TIMESTAMP`)。 - **`ROW FORMAT`**:指定数据分隔方式,例如: ```sql ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' -- 字段分隔符 LINES TERMINATED BY '\n' -- 行分隔符 ``` #### 3. 创建表示例 ##### 示例1:基础表 创建一个员工信息表,存储为文本文件: ```sql CREATE TABLE IF NOT EXISTS employees ( id INT COMMENT '员工ID', name STRING COMMENT '姓名', age INT COMMENT '年龄' ) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' STORED AS TEXTFILE; ``` ##### 示例2:分区表 按部门分区创建表,存储为ORC格式: ```sql CREATE EXTERNAL TABLE sales_data ( product_id STRING, sale_amount DOUBLE ) PARTITIONED BY (sale_date STRING) STORED AS ORC LOCATION '/user/hive/warehouse/sales'; ``` ##### 示例3:分桶表 对用户ID分桶并排序: ```sql CREATE TABLE user_behavior ( user_id STRING, action STRING, timestamp BIGINT ) CLUSTERED BY (user_id) SORTED BY (timestamp DESC) INTO 4 BUCKETS STORED AS PARQUET; ``` ##### 示例4:使用复杂数据类型 包含数组和映射类型: ```sql CREATE TABLE user_profiles ( user_id STRING, interests ARRAY<STRING>, address MAP<STRING, STRING> ) ROW FORMAT DELIMITED COLLECTION ITEMS TERMINATED BY '|' MAP KEYS TERMINATED BY ':'; ``` #### 4. 关键注意事项 - **`EXTERNAL`**:外部表数据不受Hive管理,删除表时仅删除元数据[^1]。 - **`STORED AS`**:支持`TEXTFILE`、`ORC`、`PARQUET`等格式,ORC/Parquet适合高性能查询[^2]。 - **`PARTITIONED BY`**:分区字段不能与表字段重复,分区可加速查询[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值