Hive表未填充来自登台表的数据

时间:2016-01-28 17:37:16

标签: mysql sql csv hadoop hive

我有一个问题,我希望有人可以帮助我,我相信这是因为我的桌子被分区,但我很难找到解决方案。

我创建了一个表格,例如下面的例子

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;

我可以看到数据已经出现在我的临时表中,但它没有进入实际的表格,我只能想到分区是其中的原因。

非常感谢任何帮助。

由于

0 个答案:

没有答案