hive中的时间戳分区

oipij1gg  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(541)

我正在尝试在配置单元中创建基于时间戳的分区。但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` '按预期格式化其工作。但我需要日期和时间戳之间的空格。
ckocjqey

ckocjqey1#

在hdfs中创建文件夹名 space 在这两者之间,它需要用 \ ```
hadoop fs -mkdir test\ 123

在hdfs中创建一个名为 `test 123` .
类似地,hive在使用partition值创建的文件夹中维护分区。这就是为什么要提供日期格式 `%Y%m%d\ %H%m%S` 将有助于创建带有空格的文件夹。以下是测试和工作:

INSERT OVERWRITE table person_details1 partition(datelocal='20180102\ 200128') select * from person_details;
``` datelocalString edited:executed the 代码,下面是工作代码:

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;

相关问题