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