我试图使用以下方式在YYYY-MM-DD格式的HIVE中找到上周六的日期:
SET DATE_DM2=date_sub(from_unixtime(unix_timestamp(),'yyyy-MM-dd'),cast(((from_unixtime(unix_timestamp(), 'u') % 7)+1) as int));
但这是错误
答案 0 :(得分:1)
更改此行:
c = "hive -e 'use Data; SELECT * FROM table1 WHERE partitiondate='${DATE_D}';'"
成:
c = "hive -e \"use Data; SELECT * FROM table1 WHERE partitiondate='{DATE_D}';\"".format(DATE_D=DATE_D)
致format
的电话是@Mai提到的。对于打印c,print c
将在运行时向您显示c
的值,因此您将知道该值是否符合您的预期。
PS 调用commands.getoutput
不仅会获取行,而且会在命令行中调用hive
的所有标准输出,并将其存储在单个字符串中 - 这意味着你如果你需要处理那些行,可能需要做一些解析。或者更好的是,请查看HiveClient。