未使用暂存表中的数据填充配置单元表

bq9c1y66  于 2021-05-29  发布在  Hadoop
关注(0)|答案(0)|浏览(242)

我有一个问题,我希望有人能帮助我,我相信这是由于我的表是如何被分割,但我正在努力想出一个解决办法。
我创建了一个表,例如下面的示例

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\u date中的值应该是yyyymmdd格式的日期格式,该格式派生自字段time,其中所有值都设置为2015-06-20t00:00:00,但我不确定tran\u date应该如何获得该值。${day}的值是20150620。我试着使用下面的测试来查看数据的出现,但是没有成功

insert overwrite table Demo partition (to_char(time,YYYY-MM-DD) = ${day}) SELECT * FROM Demo_staging;

我可以看到数据已经出现在我的staging表中,但它并没有到达实际的表,我只能认为分区是造成这种情况的原因。
非常感谢您的帮助。
谢谢

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题