hiveSQL

hive SQL

文件格式

AvroSerDe

ORC Files

Parquet

压缩文件

在某些情况下,保持在 Hive 表中压缩数据可以提供比未压缩存储更好的 performance;在磁盘使用和查询 performance 方面。

DDL

  1. 建表语句
1
CREATE TABLE pokes (foo INT, bar STRING);

创建名为poke的表,包含两列 整数型foo和字符型的bar

1
CREATE TABLE invites (foo INT, bar STRING) PARTITIONED BY (ds STRING);

创建名为invites的表,包含两列 整数型foo和字符型的bar,同时建立一个虚拟的分区字段ds,但是该字段不存放实际的数据内容,仅仅是分区的表示。 Hive 中,表中的一个 Partition 对应于表下的一个目录,所有的 Partition 的数据都存储在最字集的目录中。

1
2
3
4
5
6
7
8
9
10
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]

2.修改表结构

1
2
3
4
hive> ALTER TABLE events RENAME TO 3koobecaf;
hive> ALTER TABLE pokes ADD COLUMNS (new_col INT);
hive> ALTER TABLE invites ADD COLUMNS (new_col2 INT COMMENT 'a comment');
hive> ALTER TABLE invites REPLACE COLUMNS (foo INT, bar STRING, baz INT COMMENT 'baz replaces new_col2');

可以重命名表,添加列 重命名列或者修改列的数据结构,也可以用来删掉某一行

1
ALTER TABLE invites REPLACE COLUMNS (foo INT COMMENT 'only keep the first column');

删除数据库

1
DROP TABLE pokes;

DML

  • LOAD

转载数据到hive表中

1
2
LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename [PARTITION (partcol1=val1, partcol2=val2 ...)]
LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename [PARTITION (partcol1=val1, partcol2=val2 ...)] [INPUTFORMAT 'inputformat' SERDE 'serde'] (``3.0` `or later)
  • INSERT
  • UPDATE
  • DELETE
  • MERGE

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!