2014-02-19 165 views
0

我想知道是否有人有經驗在dfs上存儲大文件然後閱讀它;例如,我想要有成千上萬的記錄來描述一個對象,因爲它們是不同的實例。例如,我有以下類描述對象的類實現:hadoop輸入格式二進制或ASCII

class someclass { 
    attr1 
    attr2 
    attr3 
    .... 
} 

該類是相同的,但我會有不同的實例。 Hadoop是一個二進制類型的存儲(用於編寫序列化程序並轉儲它)或ASCII,並且可以隨意解析它們,這更好嗎?

我還必須提及它的屬性數量可能會改變,並且在未來會有所不同。如果可能的話,我想避免更新已經寫入dfs的類實例。

回答

1

使用Avro二進制序列化。在這種情況下,你不能使用同一個類,但它在屬性和類型方面看起來是一樣的。 Avro擁有非常靈活的模式支持,它可以拆分,並且可以立即得到Hadoop的全面支持。

你的類的架構將是這樣的:

{"namespace": "your.package.name", 
"type": "record", 
"name": "SomeClass", 
"fields": [ 
    {"name": "attr1", "type": "YourType1"}, 
    {"name": "attr2", "type": "YourType2"}, 
    {"name": "attr3", "type": "YourType3"} 
] 
} 
+0

啊哈!我不知道這件事存在!發現!謝謝@Viacheslav! – jtimz