我有一个问题,我希望有人可以帮助我,我相信这是因为我的桌子被分区,但我很难找到解决方案。
我创建了一个表格,例如下面的例子
CREATE TABLE Demo
(time timestamp COMMENT 'timestamp in format yyyymmddTss:mm:hh',
exampleId varchar(6) COMMENT 'example field'
example2 varchar(10) COMMENT 'example field'
example3 varchar(50) COMMENT 'example field'
example4 varchar(50) COMMENT 'example field'
)
COMMENT 'A table to demonstrate my problem'
PARTITIONED BY (TRAN_DATE DATE COMMENT 'Transaction Date')
CLUSTERED BY (exampleId)
SORTED BY (exampleId) INTO 24 BUCKETS
stored as orc;
然后我尝试使用外部表(如下面的
)将CSV文件中的数据复制到表中Drop TABLE Demo_staging
CREATE TABLE Demo_staging
(time timestamp COMMENT 'timestamp in format yyyymmddTss:mm:hh',
exampleId varchar(6) COMMENT 'example field'
example2 varchar(10) COMMENT 'example field'
example3 varchar(50) COMMENT 'example field'
example4 varchar(50) COMMENT 'example field'
)
COMMENT 'The staging table to demonstrate my problem'
row format delimited fields terminated by ',' null defined as '\001'
STORED AS TEXTFILE
LOCATION '${appPath}/raw'
tblproperties ("skip.header.line.count"="1", "skip.footer.line.count"="2");
insert overwrite table Demo partition (TRAN_DATE = ${day}) SELECT * FROM Demo_staging;
TRAN_DATE中的值应该是格式为YYYYMMDD的日期格式,该格式是从所有值设置为2015-06-20T00:00:00的字段时间派生而来的,但我不确定TRAN_DATE是怎样的应该得到这个价值。 $ {day}的值是20150620.我已尝试使用以下内容作为测试,看看数据出现但没有运气
insert overwrite table Demo partition (to_char(time,YYYY-MM-DD) = ${day}) SELECT * FROM Demo_staging;
我可以看到数据已经出现在我的临时表中,但它没有进入实际的表格,我只能想到分区是其中的原因。
非常感谢任何帮助。
由于