将输出拆分为 Hive 中的多个文件

Split output to multiple files in Hive

我想按一个属性拆分 SQL 个 Hive 结果并将这些文件传输到 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

目标是将一个文件(直线输出)拆分为每个 USER_ID sFTP 位置中的多个 csv 文件。

直线脚本结果:

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

感谢@David C.Rankin


     awk -v field=a -v n=1 -v dt=$(date '+%Y%m%d%H%M%S')
    'FS=","; 
     FNR == 1 {hdg=[=10=]; next} a !=  {a = ; name=a"_file_"dt".csv"; n++;
     print hdg >name} 
     {print [=10=] > name}' 
     sample_file.csv