HIVE建表

HIVE建表语句:

CREATE [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] 
  [ROW FORMAT row_format] 
  [STORED AS file_format] 
  [LOCATION hdfs_path]
  • CREATE TABLE 创建一个指定名字的表。如果相同名字的表已经存在,则抛出异常;用户可以用 IF NOT EXIST 选项来忽略这个异常
  • EXTERNAL 关键字可以让用户创建一个外部表,在建表的同时指定一个指向实际数据的路径(LOCATION)(当删除外部表时,外部表的数据不会删除;删除分区时,对应的分区数据也不会从HDFS上删除)
 CREATE EXTERNAL TABLE ext_tbl
 (
    dept INT COMMENT '部门',
    name STRING COMMENT '名称',
    gender STRING COMMENT '性别'
 )
 COMMENT 'This is an external table'
 PARTITIONED BY ( id INT COMMENT '编号')
 ROW FORMAT DELIMITED FIELDS TERMINATED BY '\054'
 STORED AS TEXTFILE
 LOCATION '/user/hadoop/warehouse/ext_tbl'
;


  • LIKE 允许用户复制现有的表结构,但是不复制数据,即创建一个与当前表结构完全相同的空表。
    CREATE TABLE comp_tbl LIKE ext_tbl;
  • COMMENT可以为表与字段增加描述
  •  PARTITION 表示分区表,后面括号里的字段为分区字段,可有一个或多个
  •  CLUSTERD 表示 BUCKET表,按SORTED字段排序
  •  ROW FORMAT:
 DELIMITED [FILEDS TERMINATED BY char][COLLECTION ITEMS TERMINATED BY char][MAP KEYS TERMINATED BY char][LINES TERMINATED BY                     char]
 |SERDE serde_name [WITH SERDEPROPETIES(propety_name=property_value,propety_name=property_value,…)]

 如果建表的时候没有指定ROW FORMAT系统会默认为使用SERDE,相关内容可参考链接点击打开链接

 [ROW FORMAT DELIMITED]关键字,是用来设置创建的表在加载数据的时候,支持的列分隔符。

 比如:ROW FORMAT DELIMITED 

         FILEDS TERMINATED BY '\001'

         COLLECTION ITEMS TERMINATED BY '\002'

         MAP KEYS TERMINATED BY '\003'

 表示不同列之间用一个'\001'分割,集合(例如array,map)的元素之间以'\002'隔开,map中key和value用'\003'分割。

  • SORTED AS

SEQUENCEFILE

|TEXTFILE

|RCFILE

|ORC

|INPUTFORMAT input_format_classname OUTPUTFORMAT output_format_classname

只有TEXTFILE表能直接加载数据(如本地load数据,外部表直接加载路径数据),hadoop默认支持的压缩格式也只能用TEXTFILE表直接读取,即其他形式的表都要通过insert table as select from text_table来导入数据;如果数据需要压缩,需使用SEQUENCEFILE;RCFILE是一种行列存储相结合的存储方式;ORC是RCFILE的升级版。更详细的源文件存储格式可参考HIVE的源文件存储格式

ORC三种创建/使用方式:

1、 STORED AS ORC;

2、ROW FORMAT SERDE 'org.apache.hadoop.hive.ql.io.orc.OrcSerde' with serdeproperties('serialization.null.format' = '') STORED AS ORC;

3、 ROW FORMAT DELIMITED NULL DEFINED AS '' STORED AS ORC;

Hive 是一个基于 Hadoop 的数据仓库工具,可以通过类 SQL 语言来查询和分析数据。下面是 Hive 建表的基本语法: ``` CREATE TABLE [IF NOT EXISTS] table_name ( column1 data_type [COMMENT col_comment], column2 data_type [COMMENT col_comment], ... ) [COMMENT table_comment] [PARTITIONED BY (col_name data_type [COMMENT col_comment], ...)] [ROW FORMAT row_format] [STORED AS file_format] [TBLPROPERTIES (property_name=property_value, ...)] ``` 其中,各个参数的含义如下: - `IF NOT EXISTS`:可选参数,表示如果表已经存在,则不执行创建操作。 - `table_name`:要创建的表的名称。 - `column1, column2, ...`:表的列名及其对应的数据类型。 - `COMMENT`:列注释或表注释。 - `PARTITIONED BY`:可选参数,表示按照哪些列进行分区。 - `ROW FORMAT`:可选参数,指定行的格式,如 `DELIMITED FIELDS TERMINATED BY ','`。 - `STORED AS`:可选参数,指定表的存储格式,如 `TEXTFILE`, `ORC`, `PARQUET` 等。 - `TBLPROPERTIES`:可选参数,用于设置表的属性,如 `LOCATION`、`SERDE`、`INPUTFORMAT`、`OUTPUTFORMAT` 等。 例如,我们创建一个学生表,包含学号、姓名、年龄三个字段,其中学号为 int 类型,姓名和年龄为 string 类型,可以使用以下语句: ``` CREATE TABLE IF NOT EXISTS student ( id INT COMMENT '学号', name STRING COMMENT '姓名', age STRING COMMENT '年龄' ) COMMENT '学生表' ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' STORED AS TEXTFILE; ``` 这样就创建了一个名为 `student` 的表,包含 `id`、`name`、`age` 三个字段。其中,`COMMENT` 用于设置列或表的注释,`ROW FORMAT` 用于设置行的分隔符,`STORED AS` 用于设置表的存储格式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值