我可以阅读一些文章,其中我可以读到 csv 速度较慢且不适合大型数据集。
但我无法理解 avro/parquet 内部是什么,这使得它对于更大的数据集比 csv 更快。
首选数据格式的顺序(在 Hadoop 上下文中)通常是 ORC、Parquet、Avro、SequenceFile,然后是 PlainText。
反对 CSV 的主要原因是它只是一个字符串,这意味着通过根据文件编码(例如 UTF8)存储所有字符,数据集会更大;没有与数据关联的类型信息或模式,并且在反序列化时始终会对其进行解析。换句话说,例如,当存储布尔字段时,您实际上只需要二进制中的一位,但在 CSV 中,您必须存储 , 的完整字节,"true"
或者, 或"false"
的字符串,其作为 ASCII 仍然是完整的 8位。"0"
"1"
另一方面,ORC 和 Parquet 维护类型信息并支持柱状下推谓词以实现更快的分析(如 RDBMS)
Avro 是一种基于行的格式。主要用于网络传输,而不是长期存储。Avro 可以轻松转换为 Parquet。由于它仍然是键入的和二进制的,因此它比 CSV 消耗更少的空间,并且仍然比纯文本处理速度更快。
SequenceFiles 是 Hadoop 的中间立场,但没有得到其他工具的广泛支持。
归档时间: |
|
查看次数: |
3960 次 |
最近记录: |