MapReduce讀 寫RCFile檔案

2021-07-10 22:52:37 字數 2215 閱讀 8378

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檔案 配置檔案和客戶端計算所得的輸入劃分資訊。...