2016-02-18 51 views
-1

我將以一個例子開始。假設輸入數據是一樣的東西如何將reducer的輸出寫入數據庫?

User1,product1,time1 
User1,product2,time2 
User1,product3,time3 
User2,product2,time2 
User2,product4,time6 

現在預計的輸出是我必須將數據插入到數據庫(塞式(鍵值存儲),在我的情況),其中數據格式應爲

User1, [ [product1,time1],[product2,time2],[product3,time3] ] 
User2, [ [product2,time2],[product4,time6] ] 

所以在映射器I輸出下面

UserID, [productid,timestamp] 

請不要以爲[X,Y]意味着我輸出列表我可能從mappper以任何方式發送數據可能會寫入數據的自定義對象

所以在接收端我在格式

User1, [ [product1,time1],[product2,time2],[product3,time3] ] 
User2, [ [product2,time2],[product4,time6] ] 

現在有數據,我可以做兩件事情

a)我可以編寫邏輯在reducer中將數據推入數據庫 (我不想這樣做)

b)我想要做的是,當我們執行Context.write()時,我想要數據到b e寫入數據庫。

請幫幫忙怎麼會這樣做,如果可能的附加代碼片斷或僞代碼

PS:這是什麼Context.write()呢?它寫在哪裏?它的步驟和階段是什麼?

+0

context.write滿足您的需求在HDFS將數據寫入到文件或地方提到。稍後您可以將該數據指向外部配置單元表,以便可用於查詢或使用hbase讀取數據。 –

回答

0

至於我的理解去,調用context.write涉及一定數量的步驟

在我們指定的輸出格式的驅動器。現在讓我們看看,如果我們要寫入文件

個究竟用於寫入文本文件,我們指定像

job.setOutputFormatClass(TextOutputFormat.class); 

現在,如果我們看到延伸FileOutputFormat的TextOutputFormat類的實現(抽象類)它實現了OUTPUTFORMAT接口和OUTPUTFORMAT接口提供了兩個方法

1) getRecordWriter 
2) checkOutputSpecs 

現在會發生什麼,OutputFormatClass只是告訴你想要什麼樣的記錄來寫,以及如何通過記錄寫入給出了記錄作者只需要Object Key, Object Value其中值可以是單個或列表,並且在記錄編寫器的實現中,我們指定了實際的邏輯,比如應該如何寫這個記錄。

現在正在添加回原來的問題是如何應記錄在我的案件被寫入到數據庫中塞式

我創建了一個自定義的OUTPUTFORMAT說

public class AerospikeOutputFormat extends OutputFormat { 
    //Return a new instance of record writer 
    @Override 
    public RecordWriter getRecordWriter(TaskAttemptContext context) throws IOException, InterruptedException { 
     return new AerospikeRecordWriter(context.getConfiguration(), new Progressable() { 
     @Override 
     public void progress() { 

     } 
    }); 
    } 

} 

現在,我們必須定義一個自定義記錄作家將獲得一個關鍵和價值,並將數據寫入數據庫

public class RSRVRecordWriter<KK,VV> extends RecordWriter<KK, VV> { 

    @Override 
    public void write(KK key, VV value) throws IOException { 
     //Now here we can have an instance of aerospikeclient from a singleton class and then we could do client.put() 

    } 

上面的代碼只是一個片段,適當的設計策略mu將被採取。

PS:塞式給了一個記錄寫入其可以擴展到this link

相關問題