我正在尝试在配置单元中创建基于时间戳的分区。但是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
'格式时,其按预期工作。但是我需要在日期和时间戳之间留出空间。
答案 0 :(得分:1)
要在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;