unix - 将 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
解决方案
您可以将 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}
参见演示),并用逗号打印它们的第二和第三列值和中间的空间。
推荐阅读
- azure-devops - 如何在 Azure Devops 的 PR 上插入建议?
- sql - 需要帮助根据另一列中的日期范围获取一列的总和
- javascript - 使用 vue-charts.js,我无法让 hoverOffset 与甜甜圈一起使用
- python - 查找文本python3中列表中的某个单词
- python-3.x - 使用 tf.Variable(range(0,20),shape=(10,2)) 创建 10 x 2 矩阵时出现值错误
- css - 使用 LESS 在不同的 HTML 标签中使用不同的样式
- javascript - 如何使用 jquery 设置 attr parent() ::before 元素?
- vue.js - 要求用户具有角色并登录路由
- powershell - 使用标题过滤器格式化 Powershell CSV 输出文件
- azure-active-directory - 使用 SCIM 从 Azure AD 预配功能/委派/组帐户