hive 建立表格

示例

创建具有分区的托管表并存储为序列文件。假定文件中的数据格式Ctrl-A (^A)由换行符进行字段分隔和行分隔。下表是hive.metastore.warehouse.dir在Hive仓库目录中创建的,该目录中为Hive配置文件中的键指定了值hive-site.xml。

CREATE TABLE view
(time INT, 
id BIGINT,
url STRING, 
referrer_url STRING,
add STRING COMMENT 'IP of the User')
COMMENT 'This is view table'
PARTITIONED BY(date STRING, region STRING)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\001'
STORED AS SEQUENCEFILE;

创建具有分区的外部表并存储为序列文件。假定文件中的数据格式ctrl-A由换行符进行字段分隔和行分隔。下表是在指定的位置创建的,当我们已经有数据时,它将很方便。使用外部表的优点之一是我们可以删除表而不删除数据。例如,如果我们创建一个表并意识到该模式是错误的,那么我们可以安全地删除该表并使用新模式进行重新创建,而不必担心这样做的data.Other好处是,如果我们在相同文件上使用其他工具(例如Pig),则可以继续甚至在删除表格后也要使用它们。

CREATE EXTERNAL TABLE view
(time INT, 
id BIGINT,
url STRING, 
referrer_url STRING,
add STRING COMMENT 'IP of the User')
COMMENT 'This is view table'
PARTITIONED BY(date STRING, region STRING)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\001'
STORED AS SEQUENCEFILE
LOCATION '<hdfs_location>';

使用选择查询创建表并填充查询结果,这些语句称为CTAS(Create Table As Select)

CTAS有两部分,SELECT部分可以是HiveQL支持的任何SELECT语句。CTAS的CREATE部分从SELECT部分获取结果模式,并使用其他表属性(例如SerDe和存储格式)创建目标表。

CTAS具有以下限制:

  • 目标表不能是分区表。

  • 目标表不能是外部表。

  • 目标表不能是列表存储表。

CREATE TABLE new_key_value_store
ROW FORMAT SERDE "org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe"
STORED AS RCFile
AS
SELECT * FROM page_view
SORT BY url, add;

创建表如下:

CREATE TABLE像形式可以让您精确地复制现有的表定义(没有复制其数据)。与CTAS相比,下面的语句创建一个新表,其定义在所有细节(表名除外)中均与现有表完全匹配。新表不包含任何行。

CREATE TABLE empty_page_views
LIKE page_views;