一、hive创建表的语句
创建表是Hive中最常见的任务之一。在Hive中,我们使用CREATE TABLE语句来创建一个新的表。下面是hive创建表的语句:
CREATE [TEMPORARY] [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] [SKEWED BY (col_name, col_name, ...) ON ((col_value, col_value, ...), (col_value, col_value, ...), ...) [STORED AS DIRECTORIES]] [ROW FORMAT row_format] [STORED AS file_format] [LOCATION hdfs_path] [TBLPROPERTIES (property_name=property_value, ...)]
以上语句中,[]中的内容可以省略,而()中的内容必须填写。下面分别对以上所用到的关键字进行详细说明:
- TEMPORARY: 暂时性表,用于当前session
- EXTERNAL: 外部表,表的数据被存储在Hive以外的位置
- IF NOT EXISTS: 如果表不存在,则创建表;否则不会创建
- table_name: 表名
- col_name: 列名
- data_type: 数据类型
- col_comment: 列注释
- table_comment: 表注释
- PARTITIONED BY: 分区键
- num_buckets: 分桶数量
- BUCKETS: 将表数据分成多个文件,用于并行处理加速
- SKEWED BY: 数据倾斜处理
- STORED AS DIRECTORIES: 在多个路径中存储文件
- row_format: 行数据格式
- file_format: 文件格式
- LOCATION: 表数据的存储路径
- TBLPROPERTIES: 表属性,以key-value对形式存储
二、hive创建表时选择题
在Hive创建表时,可能会遇到不同的需求和情况,需要使用不同的语句和操作方式。以下是几个选择题,帮助你更好地理解Hive创建表。
1、创建一个临时表,表名为table1,包含两列,分别为col1和col2,数据类型分别为int和string:
CREATE TEMPORARY TABLE table1 (col1 int, col2 string);
2、创建一个外部表,表名为table2,数据存储在“/user/hdfs/data/table2”路径下,其中有两列分别为col1和col2,数据类型分别为int和string:
CREATE EXTERNAL TABLE table2 (col1 int, col2 string) LOCATION '/user/hdfs/data/table2';
3、创建一个分区表,表名为table3,数据存储在“/user/hdfs/data/table3”路径下,包含两列,其中一列为分区键partition_col,数据类型为string,另一列为value_col,数据类型为int:
CREATE TABLE table3 (value_col int) PARTITIONED BY (partition_col string) LOCATION '/user/hdfs/data/table3';
三、hive创建表命令
Hive创建表是一个常见的任务,下面是一些常用的Hive创建表命令。
1、创建一个包含两列的表,其中一列为id,数据类型为int,另一列为name,数据类型为string,并且表名为table1:
CREATE TABLE IF NOT EXISTS table1 ( id INT, name STRING );
2、创建一个外部表,其中一列为id,数据类型为int,另一列为name,数据类型为string,表数据存储在/user/hdfs/data/table2路径中,并且表名为table2:
CREATE EXTERNAL TABLE IF NOT EXISTS table2 ( id INT, name STRING ) LOCATION '/user/hdfs/data/table2';
3、创建一个分区表,其中一列为id,数据类型为int,另一列为name,数据类型为string,并且表名为table3,分区键为ds和city:
CREATE TABLE IF NOT EXISTS table3 ( id INT, name STRING ) PARTITIONED BY (ds STRING, city STRING);
4、创建一个分桶表,其中一列为id,数据类型为int,另一列为name,数据类型为string,并且表名为table4,数据分为5个桶:
CREATE TABLE IF NOT EXISTS table4 ( id INT, name STRING ) CLUSTERED BY (id) INTO 5 BUCKETS;
四、hive创建表指定文件格式
Hive可以指定不同的文件格式来存储表数据,以下是常见的几种文件格式及创建语句。
1、创建一个存储在Parquet格式文件中的表,其中一列为id,数据类型为int,另一列为name,数据类型为string:
CREATE TABLE IF NOT EXISTS parquet_table ( id INT, name STRING ) STORED AS PARQUET;
2、创建一个存储在ORC格式文件中的表,其中一列为id,数据类型为int,另一列为name,数据类型为string:
CREATE TABLE IF NOT EXISTS orc_table ( id INT, name STRING ) STORED AS ORC;
3、创建一个存储在SequenceFile格式文件中的表,其中一列为id,数据类型为int,另一列为name,数据类型为string:
CREATE TABLE IF NOT EXISTS seq_table ( id INT, name STRING ) STORED AS SEQUENCEFILE;
五、Hive创建表例子
以下是一些创建表的例子,包含了表的各种属性设置:
1、创建一个外部表,其中一列为id,数据类型为int,另一列为name,数据类型为string,表数据存储在/user/hdfs/data/table5路径中,表名为table5:
CREATE EXTERNAL TABLE IF NOT EXISTS table5 ( id INT, name STRING ) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' STORED AS TEXTFILE LOCATION '/user/hdfs/data/table5';
2、创建一个分区表,其中一列为id,数据类型为int,另一列为name,数据类型为string,表名为table6,分区键为dt和city,表数据存储在/user/hdfs/data/table6路径中:
CREATE TABLE IF NOT EXISTS table6 ( id INT, name STRING ) PARTITIONED BY (dt STRING, city STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' STORED AS TEXTFILE LOCATION '/user/hdfs/data/table6';
3、创建一个分桶表,其中一列为id,数据类型为int,另一列为name,数据类型为string,表名为table7,数据分为5个桶,数据存储在/user/hdfs/data/table7路径中:
CREATE TABLE IF NOT EXISTS table7 ( id INT, name STRING ) CLUSTERED BY (id) INTO 5 BUCKETS ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' STORED AS TEXTFILE LOCATION '/user/hdfs/data/table7';
六、hive创建表指定编码格式
在Hive创建表时,可以指定表的编码格式。以下是几个常见的编码格式及其创建语句。
1、创建一个UTF-8编码格式的表,其中一列为id,数据类型为int,另一列为name,数据类型为string:
CREATE TABLE IF NOT EXISTS utf8_table ( id INT, name STRING ) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' STORED AS TEXTFILE LOCATION '/user/hdfs/data/utf8_table' TBLPROPERTIES ( 'serialization.encoding'='UTF-8' );
2、创建一个GBK编码格式的表,其中一列为id,数据类型为int,另一列为name,数据类型为string:
CREATE TABLE IF NOT EXISTS gbk_table ( id INT, name STRING ) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' STORED AS TEXTFILE LOCATION '/user/hdfs/data/gbk_table' TBLPROPERTIES ( 'serialization.encoding'='GBK' );
七、hive创建表可以指定的几种方式
Hive创建表的方式有多种,比较常见的有以下几种:
- 使用命令行创建表: 在终端输入Hive命令,使用CREATE TABLE语句创建表
- 使用脚本创建表: 将创建表的语句写入脚本文件,然后通过hive -f file_name执行脚本
- 使用JDBC API创建表: 在Java或其他开发语言中,通过JDBC连接Hive,在Java中使用CREATE TABLE语句创建表
- 使用Apache HCatalog创建表: HCatalog是Apache Hadoop生态系统中的一部分,它提供了一种将数据从Hadoop存储(比如HDFS)中提取到Hive元数据库中的方式
以上就是关于Hive创建表的完整指南,包括常用的Hive创建表命令、创建表指定文件格式等内容。熟练掌握Hive创建表操作,对于数据分析、数据仓库开发人员来说具有非常重要的意义。