rcfile是facebook制定的一種高效儲存結構,它結合了行儲存和列儲存的優點,應用於hive,pig等系統中。所以,rcfile是不可以用head或tail命令擷取某些行重定向新檔案中。由於rcfile廣泛應用於hive等系統中,所以我們就先看看用mapreduce怎麼讀取rcfile檔案。
public class rcfiletocsv
else
}context.write(nullwritable.get(), new text(sb.tostring()));}}
public static void main(string args)throws exception
if(otherargs.length != 2)
job job = new job(conf, "rcfile to txt");
job.setjarbyclass(rcfiletocsv.class);
job.setoutputkeyclass(nullwritable.class);
job.setoutputvalueclass(text.class);
//reduce's number is 0.
job.setnumreducetasks(0);
job.setinputformatclass(rcfilemapreduceinputformat.class);
job.setoutputformatclass(textoutputformat.class);
rcfilemapreduceinputformat.addinputpath(job, new path(otherargs[0]));
fileoutputformat.setoutputpath(job, new path(otherargs[1]));
system.exit(job.waitforcompletion(true) ? 0 : 1);
}}
public class csvtorcfile
@override
protected void map(object key, text values,
context context)
throws ioexception, interruptedexception
context.write(nullwritable.get(), bytes);
} }public static void main(string args)throws exception
conf.setint("hive.io.rcfile.record.buffer.size", rowgroupsize);
conf.setint("io.file.buffer.size", iobuffersize);
numcols = integer.parseint(otherargs[3]);
job job = new job(conf, "txt to rcfile");
job.setjarbyclass(csvtorcfile.class);
job.setmapoutputkeyclass(nullwritable.class);
job.setmapoutputvalueclass(bytesrefarraywritable.class);
//reduce's number is 0.
job.setnumreducetasks(0);
fileinputformat.addinputpath(job, new path(otherargs[0]));
job.setoutputformatclass(rcfilemapreduceoutputformat.class);
rcfilemapreduceoutputformat.setcolumnnumber(job.getconfiguration(), numcols);
rcfilemapreduceoutputformat.setoutputpath(job, new path(otherargs[1]));
rcfilemapreduceoutputformat.setcompressoutput(job, false);
system.exit(job.waitforcompletion(true) ? 0 : 1);
}}
注意:hadoop和hive的版本匹配。
Hadoop運維 hive執行調優 rcFile
最近發現hive庫中的資料都是沒有壓縮的,每次執行超級慢,現在調優成rcfile格式,具體流程如下 1 建表時新增語句 stored as rcfile 2 在sql語句中加入配置引數 set hive.exec.compress.output true set mapred.output.comp...
Map Reduce過程概述
map reduce的過程首先是由客戶端提交乙個任務開始的。提交任務主要是通過jobclient.runjob jobconf 靜態函式實現的 public static runningjob runjob jobconf job throws ioexception finally finally...
mapreduce具體解析
1.mapreduce作業執行流程 下面貼出我用visio2010畫出的流程示意圖 流程分析 1.在客戶端啟動乙個作業。2.向jobtracker請求乙個job id。3.將執行作業所需要的資源檔案複製到hdfs上,包括mapreduce程式打包的jar檔案 配置檔案和客戶端計算所得的輸入劃分資訊。...