【问题标题】:Timestamp partitioning in HiveHive 中的时间戳分区
【发布时间】:2018-01-02 14:39:00
【问题描述】:

我正在尝试在 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' 格式时,它按预期工作。但我需要日期和时间戳之间的空间。

【问题讨论】:

  • 未经过完全测试,但请尝试使用 %Y%m%d\ %H:%m:%S 格式。它应该工作

标签: hadoop hive partitioning


【解决方案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;

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;

【讨论】:

  • 嗨。感谢您的回复。在我的 shell 脚本中尝试使用 %Y%m%d\ %H:%m:%S 格式。但其给出的错误如下: [nzdpmkt@ddh-dev-4-azkaban-main-001 ~]$ sh -x test1.sh ++ date '+%Y%m%d\ %H%m%S' + var='20180102\ 100108' + hive -f /home/nzdpmkt/load.hql -hiveconf 'dat=20180102\' 100108 使用 jar:file:/opt/hadoop/apache-hive-2.1.1- 中的配置初始化日志记录bin/lib/hive-common-2.1.1.jar!/hive-log4j2.properties Async: true FAILED: ParseException line 9:0 character '' not supported here 1:60 character '\' not supported here此处不支持第 9:0 行字符“
  • 尝试执行您的代码,您需要在声明 hiveconf 变量hive -f load.hql -hiveconf datelocal="$dat"; 时添加双引号。最后检查双重代码编辑我的答案
  • 您可以在日志中看到,hive -f /home/nzdpmkt/load.hql -hiveconf 'dat=20180102\' 100108 `\` 后面的数字被忽略了。带空格的字符串需要双引号。
  • 现在工作。非常感谢。
  • 嗨。现在正在按预期创建目录(datelocal='20180102 200128')。但是当我从 perm.test 中选择 * 时;它没有给出任何输出。能否请您也检查一下
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-01-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-22
  • 2021-12-18
  • 1970-01-01
相关资源
最近更新 更多