2013-02-11 45 views
2

我使用Hadoop將JSON轉換爲CSV文件以使用Hive訪問它們。Hadoop - 如何從實現可寫接口切換到使用Avro對象?

目前Mapper正在填充自己的數據結構,用JSON-Smart解析JSON。然後reducer正在讀取該對象並將其寫入文件,並用逗號分隔。 爲了提高速度,我已經在數據結構中實現了可寫接口......

現在我想使用Avro來獲得更多的靈活性和性能。我怎麼能改變我的課程,讓他們交換Avro對象而不是可寫?

回答

5

Hadoop通過SerializationFactory提供可插入序列化機制。

默認情況下,Hadoop的使用WritableSerialization類來處理的,其實現Writable接口的類反序列化,但你可以註冊通過設置Hadoop的配置屬性io.serializations(的實現類的一個CSV列表實現Serialization界面自定義序列序列化接口)。

Avro在AvroSerialization類中實現了Serialization接口 - 因此,這將是您在io.serializations屬性中配置的類。

Avro公司實際上有輔助類的一大堆,幫助你寫的Map/Reduce作業使用的Avro作爲輸入/輸出 - 有一些examples in the source (Git copy)

我似乎無法找到Avro的&地圖的任何好的文檔目前還在減少,但我相信還有其他一些很好的例子。

相關問題