如何编写Hive建表语句?

CREATE TABLE table_name (column1 datatype, column2 datatype, …);

Hive是一个基于Hadoop的数据仓库工具,广泛应用于大数据处理和分析,在Hive中,创建表是进行数据存储和管理的基础操作,本文将详细介绍Hive的建表语句,包括各种关键字、数据类型、约束规范以及实际案例。

Hive建表语句详解

hive建表语句

基本语法

Hive的建表语句与SQL的创建表语法非常相似,基本的建表语句如下:

CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS] table_name
(
    column1 datatype1,
    column2 datatype2,
    ...
)
COMMENT 'table comment'
PARTITIONED BY (partition_column1 datatype1, partition_column2 datatype2, ...)
CLUSTERED BY (cluster_column) INTO num_buckets BUCKETS
ROW FORMAT DELIMITED
FIELDS TERMINATED BY 'field_delimiter'
LINES TERMINATED BY '
'
STORED AS file_format
LOCATION 'hdfs_path'
TBLPROPERTIES ('property_name'='property_value', ...);

关键字解释

CREATE TABLE:用于创建一个新的表。

TEMPORARY:表示创建的是临时表,Hive 0.14.0版本开始支持。

EXTERNAL:表示创建的是外部表,默认情况下,没有参数时创建内部表;有参数时创建外部表,删除表时,内部表的元数据和数据都会被删除,而外部表的元数据被删除但HDFS上的数据不会被删除。

IF NOT EXISTS:如果表已经存在,则不执行创建操作。

table_name:表的名称。

column1 datatype1:列名及其数据类型,常见的数据类型包括INT(整型)、STRING(字符串)、FLOAT(单精度浮点数)、DOUBLE(双精度浮点数)、BOOLEAN(布尔类型)等。

hive建表语句

COMMENT:为表添加注释。

PARTITIONED BY:用于定义表的分区列。

CLUSTERED BY:用于定义表的桶列。

ROW FORMAT DELIMITED:指定行的格式为分隔格式。

FIELDS TERMINATED BY:字段之间的分隔符。

LINES TERMINATED BY:行之间的分隔符,通常为换行符

STORED AS:指定数据文件的存储格式,如TEXTFILE、SEQUENCEFILE、ORC、PARQUET等。

LOCATION:指定外部表的数据存储路径。

TBLPROPERTIES:为表设置一些自定义属性。

hive建表语句

数据类型

Hive支持多种数据类型,包括基本数据类型、数组类型、Map类型、结构体类型和Union类型。

基本数据类型

TINYINT:微整型

SMALLINT:短整型

INT:整型

BIGINT:长整型

BOOLEAN:布尔类型

FLOAT:单精度浮点数

DOUBLE:双精度浮点数

DOUBLE PRECISION:支持精确度的双精度浮点数,Hive 2.2.0版本开始支持

STRING:字符串

BINARY:二进制数据,Hive 0.8.0版本开始支持

TIMESTAMP:时间戳,Hive 0.8.0版本开始支持

DECIMAL:十进制数字,Hive 0.11.0版本开始支持

DECIMAL(precision, scale):支持精确度的十进制数字,Hive 0.13.0版本开始支持

DATE:日期,Hive 0.12.0版本开始支持

VARCHAR:字符串类型,Hive 0.12.0版本开始支持

CHAR:定长字符串类型,Hive 0.13.0版本开始支持

数组类型:格式为ARRAY < data_type >,数组包含一种任意数据类型。

Map类型:格式为MAP < primitive_type, data_type >,key必须是基本数据类型,value可以是任意数据类型。

结构体类型:格式为STRUCT < col_name : data_type [COMMENT col_comment], ...>,可以包含多个形如“列名:数据类型”的列,之间使用英文逗号分隔。

Union类型:格式为UNIONTYPE < data_type, data_type, ... >,可以包含多个任意数据类型的组合体,注意:Hive 0.7.0版本才开始支持union_type类型。

约束规范

Hive支持以下几种列约束规范:

PRIMARY KEY:主键,一个表只允许有一个主键。

UNIQUE:值唯一。

NOT NULL:值不为NULL。

DEFAULT [default_value]:设置默认值。

CHECK [check_expression]:检查。

ENABLE|DISABLE NOVALIDATE RELY/NORELY:指定是否开启约束,ENABLE NOVALIDATE表示启用约束,仅对新加入的数据强制执行约束,而不管表中的现有数据,DISABLE NOVALIDATE表示关闭约束,可以对约束列的数据进行修改等操作。

实际案例

为了更好地理解Hive建表语句和分隔符的使用,下面提供几个实际案例。

案例1:创建一个简单的内部表

假设我们需要创建一个存储员工信息的表,数据文件以逗号分隔,存储在Hive的默认目录下。

CREATE TABLE employees (
    id INT,
    name STRING,
    age INT,
    department STRING
)
COMMENT 'Employee details'
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
LINES TERMINATED BY '
'
STORED AS TEXTFILE;

案例2:创建一个带有分区的内部表

假设我们需要创建一个订单表,并按照订单日期进行分区。

CREATE TABLE orders (
    order_id INT,
    customer_id INT,
    product_id INT,
    amount DOUBLE
)
PARTITIONED BY (order_date STRING)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY 't'
LINES TERMINATED BY '
'
STORED AS TEXTFILE;

在插入数据时,可以根据order_date字段将数据划分到不同的分区中。

案例3:创建一个外部表

假设我们有一些用户行为数据文件已经存储在HDFS的某个目录下,并且这些数据文件以制表符分隔。

CREATE EXTERNAL TABLE user_behavior (
    user_id INT,
    action STRING,
    timestamp STRING
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY 't'
STORED AS TEXTFILE
LOCATION '/user/hive/warehouse/user_behavior';

通过以上案例,我们可以看到Hive建表语句在实际中的应用,根据具体需求选择合适的数据类型、分隔符和存储格式,可以有效地管理和查询大数据。

常见问题解答

问题1:如何在Hive中创建临时表?

答:在Hive中,可以通过在CREATE TABLE语句中添加TEMPORARY关键字来创建临时表。

CREATE TEMPORARY TABLE temp_table (id INT, name STRING);

临时表在会话结束时会自动删除。

问题2:如何指定字段之间的分隔符和行之间的分隔符?

答:在创建表时,可以使用FIELDS TERMINATED BY和LINES TERMINATED BY子句来指定字段之间的分隔符和行之间的分隔符。

CREATE TABLE employees (
    id INT,
    name STRING,
    age INT,
    department STRING
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
LINES TERMINATED BY '
'
STORED AS TEXTFILE;

在这个例子中,字段之间的分隔符是逗号(,),行之间的分隔符是换行符(

)。

小编有话说

通过本文的介绍,相信大家对Hive的建表语句有了更深入的了解,Hive作为一个强大的数据仓库工具,其灵活性和扩展性使得它在大数据分析领域有着广泛的应用,掌握Hive的建表语句和相关配置,可以帮助我们更好地管理和查询数据,提高数据处理的效率,希望本文能为大家在使用Hive时提供一些帮助和参考。

原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/1411150.html

本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。

(0)
未希的头像未希新媒体运营
上一篇 2024-12-15 12:16
下一篇 2024-12-15 12:18

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

产品购买 QQ咨询 微信咨询 SEO优化
分享本页
返回顶部
云产品限时秒杀。精选云产品高防服务器,20M大带宽限量抢购 >>点击进入