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