【发布时间】:2019-07-31 09:40:37
【问题描述】:
我想根据一个属性在 Hive 中拆分 SQL 结果并将这些文件传输到 sFTP。
当前代码执行提取,但没有这两个要求。 在 SQL 结果中,我的属性很少。其中之一 - USER_ID - 必须作为截止点。识别出新 ID 后 - 必须创建新文件。
编辑 - 添加时间戳
beeline -u jdbc:hive2:<MYHOST> -n <USER> -p <PASSWORD> --silent=true --outputformat=csv2 -f <SQL FILE> > result_+%Y%m%d_%H%M%S.csv
目标是将一个文件(直线输出)拆分为多个 csv 文件,每个 USER_ID 位于 sFTP 位置。
直线脚本结果:
USER | ATTR1 | ATTR2
ID1 val val
ID2 val val
ID2 val val
改造后预期结果:
USER | ATTR1 | ATTR2
ID1 val val
USER | ATTR1 | ATTR2
ID2 val val
ID2 val val
【问题讨论】:
-
那么,你的代码只生成一个文件?
-
@F.Lazarescu - 完全正确
-
而且您不想执行代码两次(在 select 语句上使用不同的过滤器?)。好像不能写beeline命令生成两个文件..
-
我可以使用不同的过滤器(按 USER_ID)复制 SQL 代码并使用上面的脚本。但是,该解决方案需要生成更多脚本文件。这个概念是在直线中运行一个 SQL,然后使用 power shell 脚本拆分该文件。
标签: sql csv hive sftp file-transfer