将hive查询结果写入指定hdfs路径下:
set mapred.reduce.tasks = 1;
insert overwrite directory '/xx/xx/'
ROW FORMAT DELIMITED FIELDS TERMINATED BY '~'
select cols...
from tableName
where conditions...
distribute by rand();
设置task数 set mapred.reduce.tasks = 1; 结果数据平均分区(分区数等于task数)distribute by rand();此时结果保存在一个文件中。结果数据每行以“~”分隔 ROW FORMAT DELIMITED FIELDS TERMINATED BY '~'。
如果结果数据不大(需要保存在一个或较少的几个文件)但计算量较大,tasks=1运行较慢,可以将结果先写入一张中间hive表,再调度tasks=1的任务将中间表中数据写入指定路径。