將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的任務將中間表中數據寫入指定路徑。