public class maxtemperatureusingsecondarysort extends configured implements tools{
private ncdcrecordparer parser = new ncdcrecordparser();
@override
protected void map(longwritable key, text value, context context) throws ioexception, interruptedexception{
parser.parse(value)
if(parser.iswalidtemperature()){
context.write(new intpair(parser.getyearint(), parser.getairtemperature()), nullwritable.get());
static class maxtemperaturereducer extends reducer{
@ovrride
protected void reduce(intpair key, iterablevalues, context coontext) throws ioexception ,interruptedexception{
context.write(key, nullwritable.get());
public static class firstpartitioner extends partitioner{
@override
public int getpartition(intpair key, nullwritable value, int numpartitions){
//multiply by 127 to perform some mixing
return math.abs(key.getfirst() * 127 ) % numpartitions;
public static class keycomparator extends writablecomparator{
protected keycomparator(){
supper(intpair.class, true);
@override
public int compare(writablecomparable w1,writab;lecomparable w2){
intpair ip1 =(intpair) w1;
intpair ip2 =(intpair) w2;
int cmp = intpair.compare(ip1.getfirst(), ip2.getfilrst());
if(cmp!=0)
return cmp
return -intpair.compare(ip1.getsecond(), ip2.getseconde());
public static class groupcomparator extends writablecomparator{
protected groupcomparator (){
super(intpair.class, true);
@ovrride
public int compare(writablecomparable w1, writablecomparable w2 ){
intpair ip1 =(intpair) w1;
intpair ip2 =(intpair) w2;
int cmp = intpair.compare(ip1.getfirst(), ip2.getfilrst());
if(cmp!=0)
return cmp
@override
public int run(string args){
job job = new job();
job.setpartitionerclass(firstpartitioner.class)
job.setsortcomparatorclass(keycomparator.class)
job.setgroupingcomparatorclass(groupcomparator.class)
job.setreducerclass(maxtemp (eraturereducer.class)
job.setoutputkeyclass(intpair.class);
job.setoutputvalueclass(nullwritable.class)
return job.waitforcompletion(true0 ? 0:1;
,intpair於textpair類相似,後者可以傳遞text,由於可以根據各個reduce的組合件獲取最高氣溫
因此無需要在值上附加其他資訊, 使用nullwritable即可, 根據輔助排序, reduce輸出第乙個鍵就是包含年份和最高氣溫的資訊的intpair物件。
intpair的tostring()方法返滬iyige以製表符分割的字串,因而該陳旭輸出一組由製表符分割的年份、氣溫對
我們建立了乙個自定義的partitioner以按照組合鍵的首字段(年份)進行分割槽,即firstpartitioner
為了按照年份(公升序)和氣溫(降序)排列鍵,我們使用setsortcomparatorclass 設定了乙個自定義鍵 comparator(即keycomparator)
以抽取欄位並執行比較操作。類似的
為了按照年份對鍵進行分組,我們使用setgroupingcomparatorclass來自定義乙個分組comparator, 只取鍵的首字段進行比較。
執行這個程式 ,返回各年的最高氣溫
hadoop jar hadoop-examples.jar maxtemperatureusingsecondarysort input/ncdc/all output-secondarysort
hadoop fs -cat output-secondarysort/part-* | sort | head
hadoop權威指南 page= 302
對你的的應用程式進行Debug
在visual studio中建立乙個新的silverlight project,並命名為 slclock.檢視 怎麼來建立乙個silverlight project 注意 將project 命名為 slclock 是很重要的,因為它必須與 中的命名符合,這樣才能正確的編譯.在visual stud...
對Windows桌面應用程式進行UI自動化測試
所謂ui自動化測試,就是模擬乙個使用者,對應用程式的ui進行操作,以完成特定場景的功能性整合測試。要完成ui自動化測試的大致步驟如下 你首先需要一台windows 10的pc 1,準備好待測試的windows桌面應用程式。4,編寫測試用例,執行測試。整個用例的編寫也相對簡單 1,使用desiredc...
打包好的應用程式進行實時更新
首先在解決方案下加個類庫 update 用以新增並引用到winform應用程式登入頁面中進行比較版本。softupdate.cs using system using system.collections.generic using system.linq using system.text usi...