如何使用当前时间戳作为Hive输出的文件名

时间:2018-01-29 08:21:58

标签: hadoop hive

我使用此代码将Hive查询的结果写入指定的文件:

INSERT OVERWRITE DIRECTORY '/user/test.user/test.csv'
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' ESCAPED BY '"' STORED AS TEXTFILE
SELECT
...

我不希望文件名为test.csv但是需要unix时间戳,即1517213651.csv或类似的东西。

我知道我无法使用concat函数来操作文件名,但这就是我所知道的。

如何将查询执行时刻的时间戳作为输出的文件名?

编辑:我们正在使用Cloudera。

2 个答案:

答案 0 :(得分:2)

另一个选择是将Hive插入放在Shell脚本中。在脚本中定义Date变量,然后使用Date Variable定义输出文件。

TIMESTAMP_VAR = date +"%Y-%m-%d-%H-%M-%S"

FILENAME_VAR = /用户/测试/ $ {TIMESTAMP_VAR}的.csv

您可以通过多种方式操作时间戳布局。

答案 1 :(得分:1)

您必须在文件路径中添加TalendDate.getDate("CCYYMMDD")

"/File1/Output_File_" + TalendDate.getDate("CCYYMMDD") + ".csv"