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

标签 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。

最佳答案

另一种选择是将 Hive 插入到 Shell 脚本中。在脚本中定义日期变量,然后使用日期变量定义输出文件。

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

FILENAME_VAR=/user/test/${TIMESTAMP_VAR}.csv

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

关于hadoop - 如何使用当前时间戳作为 Hive 输出的文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48497042/

相关文章:

java - 如何配置测试hbase程序

hadoop - 假设不赞成使用FALCON,则在Hadoop群集之间使用增量复制(使用Spark)

hadoop - AWS将配置单元SSH减少到datanode

hadoop - Hive 加载特定列

hadoop - 水平载荷分布是什么意思?

hadoop - CDH4的配置文件存放在哪里

java - 线程 “main” java.lang.NoClassDefFoundError中的异常:org/apache/commons/cli2/Option

hadoop - Hive 外部表架构重新连接

hadoop - Spark : Unable to instantiate org. apache.hadoop.hive.metastore.HiveMetaStoreClient

hadoop - 外壳程序异常java类型java.lang.Integer无法为此数据存储区映射