首页 > 解决方案 > 将 hive 控制台输出转换为文本或 csv

问题描述

我需要对 Hive 表执行计数并将结果输出到文本文件中并将其作为触发器放在另一个位置。

蜂巢输出当前如下所示:

+-------------+----------+
|     _c0     |   _c1    |
+-------------+----------+
| 2020-03-01  | 3203500  |
+-------------+----------+

我尝试了以下选项:

hive -e 'select CURRENT_DATE, count(*) from db.table;' | sed 's/[[:space:]]\+/,/g' > /trigger/trigger_file.txt

但它没有给出预期的结果。我还能尝试什么?

.txt 文件中的预期结果如下:

2020-03-01,3203500

标签: unixhiveconsole

解决方案


您可以将 sed 命令替换为 

awk -F'[| ]+' '$2 ~ /[0-9]{4}-[0-9]{2}-[0-9]{2}/{print $2","$3}'

-F'[| ]+'字段分隔符设置为[| ]+匹配一次或多次出现的空格或管道字符的正则表达式,然后获取第二个字段与日期模式匹配的所有记录([0-9]{4}-[0-9]{2}-[0-9]{2}参见演示),并用逗号打印它们的第二和第三列值和中间的空间。


推荐阅读