291294878

2018-10-22   阅读量: 859

数据分析师

文件格式存储和处理数据有哪些?

扫码加入数据分析学习群

  设计决策的关键之一是基于以下方面关注文件格式:

使用模式,例如访问50列中的5列,而不是访问大多数列。

可并行处理的可分裂性。

块压缩节省存储空间vs读/写/传输性能

模式演化以添加字段,修改字段和重命名字段。

  CSV文件

  CSV文件通常用于在Hadoop和外部系统之间交换数据。CSV是可读和可解析的。 CSV可以方便地用于从数据库到Hadoop或到分析数据库的批量加载。在Hadoop中使用CSV文件时,不包括页眉或页脚行。文件的每一行都应包含记录。CSV文件对模式评估的支持是有限的,因为新字段只能附加到记录的结尾,并且现有字段不能受到限制。CSV文件不支持块压缩,因此压缩CSV文件会有明显的读取性能成本。

  JSON文件

  JSON记录与JSON文件不同;每一行都是其JSON记录。由于JSON将模式和数据一起存储在每个记录中,因此它能够实现完整的模式演进和可拆分性。此外,JSON文件不支持块级压缩。

  序列文件

  序列文件以与CSV文件类似的结构用二进制格式存储数据。像CSV一样,序列文件不存储元数据,因此只有模式进化才将新字段附加到记录的末尾。与CSV文件不同,序列文件确实支持块压缩。序列文件也是可拆分的。序列文件可以用于解决“小文件问题”,方式是通过组合较小的通过存储文件名作为键和文件内容作为值的XML文件。由于读取序列文件的复杂性,它们更适合用于在飞行中的(即中间的)数据存储。

注意:序列文件是以Java为中心的,不能跨平台使用。

  Avro文件

  适合于有模式的长期存储。Avro文件存储具有数据的元数据,但也允许指定用于读取文件的独立模式。启用完全的模式进化支持,允许你通过定义新的独立模式重命名、添加和删除字段以及更改字段的数据类型。Avro文件以JSON格式定义模式,数据将采用二进制JSON格式。Avro文件也是可拆分的,并支持块压缩。更适合需要行级访问的使用模式。这意味着查询该行中的所有列。不适用于行有50+列,但使用模式只需要访问10个或更少的列。Parquet文件格式更适合这个列访问使用模式。

  Columnar格式,例如RCFile,ORC

  RDBM以面向行的方式存储记录,因为这对于需要在获取许多列的记录的情况下是高效的。如果在向磁盘写入记录时已知所有列值,则面向行的写也是有效的。但是这种方法不能有效地获取行中的仅10%的列或者在写入时所有列值都不知道的情况。这是Columnar文件更有意义的地方。所以Columnar格式在以下情况下工作良好

在不属于查询的列上跳过I / O和解压缩

用于仅访问列的一小部分的查询。

用于数据仓库型应用程序,其中用户想要在大量记录上聚合某些列。

  RC和ORC格式是专门用Hive写的而不是通用作为Parquet。

  Parquet文件

  Parquet文件是一个columnar文件,如RC和ORC。Parquet文件支持块压缩并针对查询性能进行了优化,可以从50多个列记录中选择10个或更少的列。Parquet文件写入性能比非columnar文件格式慢。Parquet通过允许在最后添加新列,还支持有限的模式演变。Parquet可以使用Avro API和Avro架构进行读写。

  所以,总而言之,相对于其他,你应该会更喜欢序列,Avro和Parquet文件格式;序列文件用于原始和中间存储,Avro和Parquet文件用于处理。

添加CDA认证专家【维克多阿涛】,微信号:【cdashijiazhuang】,提供数据分析指导及CDA考试秘籍。已助千人通过CDA数字化人才认证。欢迎交流,共同成长!
0.0000 0 1 关注作者 收藏

评论(0)


暂无数据

推荐课程

推荐帖子