我使用Hadoop將JSON轉換爲CSV文件以使用Hive訪問它們。Hadoop - 如何從實現可寫接口切換到使用Avro對象?
目前Mapper正在填充自己的數據結構,用JSON-Smart解析JSON。然後reducer正在讀取該對象並將其寫入文件,並用逗號分隔。 爲了提高速度,我已經在數據結構中實現了可寫接口......
現在我想使用Avro來獲得更多的靈活性和性能。我怎麼能改變我的課程,讓他們交換Avro對象而不是可寫?
我使用Hadoop將JSON轉換爲CSV文件以使用Hive訪問它們。Hadoop - 如何從實現可寫接口切換到使用Avro對象?
目前Mapper正在填充自己的數據結構,用JSON-Smart解析JSON。然後reducer正在讀取該對象並將其寫入文件,並用逗號分隔。 爲了提高速度,我已經在數據結構中實現了可寫接口......
現在我想使用Avro來獲得更多的靈活性和性能。我怎麼能改變我的課程,讓他們交換Avro對象而不是可寫?
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的&地圖的任何好的文檔目前還在減少,但我相信還有其他一些很好的例子。