我正在尝试使用分区将数据加载到配置单元表中。
代码如下:
CREATE EXTERNAL TABLE URL(url STRING, clicks INT)
COMMENT 'Unique Clicks per URL'
PARTITIONED BY(dt STRING)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t'
LINES TERMINATED BY '\n'
STORED AS TEXTFILE
LOCATION '/mypath/URL';
LOAD DATA INPATH '/inputpath/' INTO TABLE URL
PARTITION (dt=date_format(CURRENT_TIMESTAMP, "yyyy.MM.dd HH:mm:ss"));
我遇到以下错误:
FAILED: ParseException line 4:14 cannot recognize input near
'date_format' '(' 'CURRENT_TIMESTAMP' in constant
我试过用
SET hive.exec.dynamic.partition.mode=nonstrict;
但一切都没变。
为什么不起作用?如何将当前日期设置为分区列?
先谢谢你。
洛伦佐
1条答案
按热度按时间wkftcu5l1#
既然可以在文件上创建外部表,为什么还要移动这些文件?
LOAD DATA INPATH
只需将文件(hdfs元数据操作)“按原样”移动到表的位置。为什么要将分区列定义为一个字符串,而它显然是一个日期?
为什么要尝试使用非iso格式(yyyy.mm.dd)?
iso日期格式为yyyy mm dd
由于分区信息似乎不是数据的一部分,因此有3个选项:
1
使用常量(不允许表达式,包括函数),例如。
2
创建一个附加表,
URL_STG
,类似于URL
但是没有分区,并使用它来动态插入分区。三。
将日期作为cli中的变量提供