2014-02-19 67 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