数据系列格式 数据格式有哪几种( 二 )


Parquet针对“一次写入多次读取”(WORM)范例进行了优化 。写起来很慢 , 但是读起来却快得令人难以置信 , 尤其是当您仅访问总列的一个子集时 。对于需要大量读取的工作负载 , 镶木地板是一个不错的选择 。对于需要对整行数据进行操作的用例 , 应使用CSV或AVRO之类的格式 。
Parquet中数据存储的优点:
·Parquet是一种柱状格式 。仅需要的列将被获取/读取 , 这减少了磁盘I / O 。这个概念称为投影下推 。
·模式随数据一起移动 , 因此数据是自描述的 。
·尽管事实是它是为HDFS创建的 , 但数据仍可以存储在其他文件系统中 , 例如GlusterFs或NFS之上 。
·Parquet只是文件 , 这意味着可以轻松使用它们 , 移动 , 备份和复制它们 。
·开箱即用的Spark内部支持提供了将文件简单地保存并保存到存储中的功能 。
·即使使用像Snappy这样的压缩格式 , Parquet也可以提供高达75%的极佳压缩率 。
·如实践所示 , 与其他文件格式相比 , 此格式是读取工作流最快的格式 。
·Parquet非常适用于需要对大量数据的某些列进行聚合的数据仓库类型的解决方案 。
·可以使用Avro API和Avro Schema(可以将所有原始数据存储为Avro格式 , 但将所有处理后的数据存储在Parquet中)来读取和写入Parquet 。
·它还提供谓词下推 , 从而进一步降低了磁盘I / O成本 。
谓词下推/过滤下推(Predicate Pushdown/Filter Pushdown)

数据系列格式 数据格式有哪几种

文章插图
数据系列格式 数据格式有哪几种

文章插图
谓词下推的基本思想是可以将查询的某些部分(谓词)“推送”到存储数据的位置 。例如 , 当我们提供一些过滤条件时 , 数据存储将在从磁盘读取数据时尝试过滤记录 。
谓词下推的优点是更少的磁盘I / O发生 。结果 , 性能更好 。否则 , 整个数据将被带入内存 , 然后进行过滤 , 这将导致大量的内存需求 。
此优化可以通过较早而不是稍后过滤掉数据来大大减少查询/处理时间 。根据处理框架的不同 , 谓词下推可以通过执行以下操作来优化查询 , 例如在通过网络传输之前过滤数据 , 在加载到内存之前过滤数据或跳过读取整个文件或文件块的操作 。
大多数RDBMS都遵循此概念 , Parquet和ORC等大数据存储格式也遵循此概念 。
投影下推(Projection Pushdown)从数据存储中读取数据时 , 根据查询 , 仅将读取那些必需的列;并非所有字段都将被读取 。通常 , Parquets和ORC之类的列格式遵循此概念 , 从而产生更好的I / O性能 。
AvroApache Avro由Hadoop工作组于2009年发布 。它是一种基于行的格式 , 可高度拆分 。它也被描述为类似于Java序列化的数据序列化系统 。模式以JSON格式存储 , 而数据以二进制格式存储 , 从而最大程度地减小了文件大小并提高了效率 。
Avro通过管理添加的字段 , 缺少的字段和已更改的字段 , 为模式演变提供了强大的支持 。这使旧软件可以读取新数据 , 而新软件可以读取旧数据-如果您的数据有可能更改 , 则这是一项关键功能 。
借助Avro的模式架构管理能力 , 可以在不同时间独立更新组件 , 从而降低不兼容风险 。这使应用程序不必编写if-else语句来处理不同的架构版本 , 并且使开发人员不必查看旧代码来理解旧架构 。
由于架构的所有版本都存储在人类可读的JSON标头中 , 因此很容易理解所有可用字段 。
Avro可以支持许多不同的编程语言 。因为架构是在数据以二进制形式存储时以JSON格式存储的 , 所以Avro是持久性数据存储和电汇的相对紧凑的选择 。由于Avro易于附加新行 , 因此它通常是繁重的写工作负载的首选格式 。
好处:
·Avro是与语言无关的数据序列化 。
·Avro将模式存储在文件的标题中 , 以便数据可以自我描述 。
·Avro格式的文件可拆分且可压缩 , 因此非常适合在Hadoop生态系统中进行数据存储 。
·用于读取Avro文件的架构不必与用于写入文件的架构相同 。这样就可以独立添加新字段 。

推荐阅读