gpt4 book ai didi

hadoop - Hive 中的时间戳分区

转载 作者:可可西里 更新时间:2023-11-01 16:37:56 33 4
gpt4 key购买 nike

我正在尝试在配置单元中创建基于时间戳的分区。但是配置单元正在创建基于数据的分区。下面是我的代码。有人可以帮忙吗?

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中创建一个文件夹名中间有空格,需要用\对空格进行转义

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;

datelocalString

编辑:执行代码,下面是工作代码:

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;

关于hadoop - Hive 中的时间戳分区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48062885/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com