繁体   English   中英

创建 Hive 分区表

[英]Create Hive Partitioned Table

如何使用分区P1和表T2的列创建表T1

create table T2(F1 int, F2 varchar(101), ..., FN date);

create table T1 as select * from T2 partitioned by (P1 int);

抛出的错误:

AnalysisException:第 1 行中的语法错误:未定义:...2 as (select * from T1) partitioned by (P1 int) ^ Encountered: PARTITIONED Expected: LIMIT, ORDER, UNION CAUSED BY: Exception: Syntax error

知道这会很麻烦:

create table T1 (F1 int, F2 varchar(101), ..., FN date) partitioned by (P1 int);

我怎样才能达到T1

Static 分区

为执行此示例,我们创建了一个表“USER_DATA”,其中 DATE_DT 和 COUNTRY 作为分区列。 我们将数据加载到“USER_DATA”。

创建表语法:

CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS] [db_name.]table_name 
[(col_name data_type [column_constraint_specification] [COMMENT col_comment], 
[COMMENT table_comment] 
[PARTITIONED BY (col_name data_type [COMMENT col_comment], ...)];

建表语句:

CREATE TABLE USER_DATA (USER_ID INT 
,USER_NAME STRING 
,SITE_DATA STRING) 
PARTITIONED BY (DATE_DT STRING,COUNTRY STRING) 
ROW FORMAT DELIMITED 
FIELDS TERMINATED BY '\t' 
STORED AS TEXTFILE 

2.动态分区

为执行此示例,我们创建了两个表“USER_DATA_DYN”和“USER_LOG_DATA”。 表“USER_DATA_DYN”将是一个分区表,其中列 DATE_DT 和 COUNTRY 作为分区列,表“USER_LOG_DATA”将是一个非分区表。 我们将使用非分区表“USER_LOG_DATA”在“USER_DATA_DYN”中插入数据。

创建表语法:

CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS] [db_name.]table_name 
[(col_name data_type [column_constraint_specification] [COMMENT col_comment], 
[COMMENT table_comment] 
[PARTITIONED BY (col_name data_type [COMMENT col_comment], ...)];

建表语句:

让我们创建表“USER_DATA_DYN”。

CREATE TABLE USER_DATA_DYN (USER_ID INT 
,USER_NAME STRING 
,SITE_DATA STRING 
) 
PARTITIONED BY (DATE_DT STRING,COUNTRY STRING) 
ROW FORMAT DELIMITED 
FIELDS TERMINATED BY '\t' 
STORED AS TEXTFILE;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM