创建具有分区的托管表并存储为序列文件。假定文件中的数据格式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;