我正在尝试在 hive 中创建基于时间戳的分区。但是 hive 正在创建基于数据的分区。下面是我的代码。有人可以帮忙吗?
cat test1.sh
dat=`date +'%Y%m%d %H:%m:%S'`
hive -f load.hql -hiveconf file_load_timestamp=$dat;
cat load.hql
INSERT OVERWRITE table perm.test partition(file_load_timestamp='${hiveconf:dat}')
SELECT a,b FROM work.temp;
dt=20180102
/ = HDFS 路径是这样创建的。
dt=20180102 103455/
= 期望像这样创建 HDFS 路径。
当我尝试使用%Y%m%d_%H:%m:%S
' 格式时,它按预期工作。但我需要日期和时间戳之间的空间。
要在 HDFS 中创建文件夹名称,space
需要将空间转义为\
hadoop fs -mkdir test\ 123
在 hdfs 中创建一个名为 的文件夹test 123
。
类似地,hive 在使用分区值创建的文件夹中维护分区。这就是为什么提供日期格式%Y%m%d\ %H%m%S
将有助于创建带有空格的文件夹。下面是经过测试和工作的:
INSERT OVERWRITE table person_details1 partition(datelocal='20180102\ 200128') select * from person_details;
datelocal
是 String
编辑:执行代码,下面是工作之一:
hduser@Amit:~$ cat test1.sh
#!/bin/sh
dat=`date +'%Y%m%d\ %H%m%S'`
hive -f load.hql -hiveconf datelocal="$dat";
hduser@Amit:~$ cat load.hql
INSERT OVERWRITE table amit.person_details1 partition(datelocal='${hiveconf:datelocal}') select * from amit.person_details;
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句