首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 开源软件 >

hive 创办/删除/截断 表(翻译自Hive wiki)

2013-09-06 
hive 创建/删除/截断 表(翻译自Hive wiki)CREATE TABLE page_view(viewTime INT,userid BIGINT,page_url S

hive 创建/删除/截断 表(翻译自Hive wiki)

CREATE TABLE page_view(     viewTime INT,      userid BIGINT,     page_url STRING,      referrer_url STRING,     ip STRING COMMENT 'IP Address of the User') COMMENT 'This is the page view table' PARTITIONED BY(dt STRING, country STRING) ROW FORMAT DELIMITED   FIELDS TERMINATED BY '\001'   COLLECTION ITEMS TERMINATED BY '\002'   MAP KEYS TERMINATED BY '\003' STORED AS TEXTFILE;

?

这里创建了表page_view,有表的注释,一个字段ip的注释,分区有两列,分别是dt和country。

[ROW FORMAT DELIMITED]关键字,是用来设置创建的表在加载数据的时候,支持的列分隔符。不同列之间用一个'\001'分割,集合(例如array,map)的元素之间以'\002'隔开,map中key和value用'\003'分割。

?

[STORED AS file_format]关键字是用来设置加载数据的数据类型,默认是TEXTFILE,如果文件数据是纯文本,就是使用 [STORED AS TEXTFILE],然后从本地直接拷贝到HDFS上,hive直接可以识别数据。

?

常用的创建表
CREATE TABLE login(     userid BIGINT,     ip STRING,      time BIGINT) PARTITIONED BY(dt STRING) ROW FORMAT DELIMITED   FIELDS TERMINATED BY '\t' STORED AS TEXTFILE;

?

创建外部表

如果数据已经存在HDFS的'/user/hadoop/warehouse/page_view'上了,如果想创建表,指向这个路径,就需要创建外部表:

CREATE EXTERNAL TABLE page_view(     viewTime INT,      userid BIGINT,     page_url STRING,      referrer_url STRING,     ip STRING COMMENT 'IP Address of the User',     country STRING COMMENT 'country of origination') COMMENT 'This is the staging page view table' ROW FORMAT DELIMITED FIELDS TERMINATED BY '\054' STORED AS TEXTFILE LOCATION '/user/hadoop/warehouse/page_view';

创建表,有指定EXTERNAL就是外部表,没有指定就是内部表,内部表在drop的时候会从HDFS上删除数据,而外部表不会删除。

外部表和内部表一样,都可以有分区,如果指定了分区,那外部表建了之后,还要修改表添加分区。

外部表如果有分区,还可以加载数据,覆盖分区数据,但是外部表删除分区,对应分区的数据不会从HDFS上删除,而内部表会删除分区数据。

?

指定数据库创建表

如果不指定数据库,hive会把表创建在default数据库下,假设有一个hive的数据库mydb,要创建表到mydb,如下:

TRUNCATE TABLE table_name;TRUNCATE TABLE table_name PARTITION (dt='20080808');

从表或者表分区删除所有行,不指定分区,将截断表中的所有分区,也可以一次指定多个分区,截断多个分区。

热点排行