我知道Hadoop中的文件格式不同吗?默认情况下,hadoop使用文本输入格式。使用文本输入格式的优点/缺点是什么。 avro优于文本输入格式的优点/缺点是什么。
另请帮助我了解不同文件格式的用例(Avro,Sequence,TextInput,RCFile)。
答案 0 :(得分:2)
我认为除了内容是人类可读和友好之外,Text没有默认优势。您可以通过发出 Hadoop fs -cat 来轻松查看内容。
文本格式的缺点是
磁盘需要更多资源,因此会影响生产作业效率。
编写/解析文本记录需要更多时间
没有选项来维护数据类型,因为文本由多列组成。
Sequence,Avro,RCFile格式与Text格式相比具有非常显着的优势。
序列 - 通过实现Writable接口,键/值对象通过Hadoop的本机序列化过程直接以二进制格式存储。列的数据类型得到很好的维护,并且还可以轻松地解析具有相关数据类型的记录。由于二进制格式,与文本相比,它占用的空间较小。
Avro - 它是hadoop键/值对的非常紧凑的二进制存储格式,通过Avro序列化/反序列化读取/写入记录。它与Sequence文件格式非常相似,但也提供语言互操作性和单元版本控制。
如果您需要进行单元格版本控制,或者要存储的数据将被少数其他用Java以外的其他语言编写的应用程序使用,您可以选择Avro over Sequence .Avro文件可以由任何语言处理,如C,Ruby,Python, PHP,Java其中Sequence文件仅适用于Java。
RCFile - 记录列文件格式是面向列的,它是一种Hive特定的存储格式,旨在使hive能够支持更快的数据加载,减少存储空间。
除此之外,您还可以考虑ORC和Parquet文件格式。