1. 首页
  2. 综合百科
  3. 常见的数据文件格式(为你解析常用数据格式)

常见的数据文件格式(为你解析常用数据格式)

简介:关于常见的数据文件格式(为你解析常用数据格式)的相关疑问,相信很多朋友对此并不是非常清楚,为了帮助大家了解相关知识要点,小编为大家整理出如下讲解内容,希望下面的内容对大家有帮助!
如果有更好的建议或者想看更多关于综合百科技术大全及相关资讯,可以多多关注茶馆百科网。

在本文中,我们将使用Apache Spark向您介绍四种大数据文件格式的各种属性,以及它们的优缺点。

众所周知,Apache Spark支持许多不同的数据格式,包括普遍存在的CSV格式、web友好的JSON格式,以及Apache Parquet和Apache Avro,它们通常用于大数据分析。

1. CSV

CSV(逗号分隔值)文件,通常用于在系统之间使用纯文本交换表类型数据。CSV是一种基于行的文件格式。也就是说,这样一个文件中的每一行都对应于数据表中的特定行。通常,CSV文件包含一个提供数据列名的标题行。如果没有标题行,则认为该文件是部分结构化的。

单个CSV文件通常不显示层次结构或数据关系。特定的数据连接关系通常需要由多个CSV文件组织。外键通常存储在一个或多个文件中的多个列中。但是这些文件之间的链接并不是由格式本身表示的。此外,由于它不是完全标准化的,您可以在CSV格式文件中使用逗号以外的分隔符,例如制表符或空格。

CSV文件的另一个特点是:只有在原始未压缩文件的状态下,或使用诸如bzip2 (https://en.wikipedia.org/wiki/bzip2)或lzo ru.wikipedia.org/wiki/lzo(https://)等解压工具,才能对CSV文件进行拆分(注意:拆分前必须对lzo进行索引)。

优点:

CSV易于阅读,也易于手动编辑。

CSV提供了一个简单而清晰的信息模式。

几乎所有现有的应用程序都可以处理CSV文件。

CSV文件相对容易实现和解析。

对于XML,需要在每一行的每一列中添加开始和结束标记;另一方面,CSV是极简的,您只需要编写一次列标头。

缺点:

因为处理的是平面数据,所以需要预先格式化和转换复杂的数据结构。

由于不支持列类型,因此文本列和数字列之间没有区别。

没有标准的方法来表示二进制数据。

因为NULL和引号之间没有区别,所以在导入CSV时可能会出现问题。

对特殊字符的支持不佳。

缺乏普遍的标准。

尽管有其局限性,CSV文件仍然是数据共享的最佳选择。它经常用于广泛的商业应用、消费行业和科学分析程序。目前大多数批处理和流数据处理模块(如Spark和Hadoop)都支持CSV文件的序列化和反序列化。它们提供了一种在读取时添加模式的方法。

2. JSON格式

JSON数据(JavaScript对象表示法)以部分结构化的格式提供给各种键-值对。与XML不同,JSON通常可以以分层格式存储数据,也就是说,子数据可以由父数据显示。与XML类似,它们在格式上是自描述的,用户可以直接读取。然而,JSON文档通常要小得多。随着基于rest的Web服务的激增,JSON文档经常用于网络通信。

由于许多类型的数据传输已经使用JSON格式,因此目前大多数Web编程语言都可以支持JSON,或者通过使用外部库序列化和反序列化JSON数据。有了这种支持,JSON通过显示数据结构帮助用户进行热数据格式转换和冷数据存储中涉及的逻辑格式。

目前,许多批处理和流数据处理模块可以原生支持JSON的序列化和反序列化。不仅JSON文档中包含的数据最终可以以性能更优化的格式(如Parquet或Avro)存储,而且JSON提供的原始数据类型对于按需进行数据再处理的任务也很重要。

JSON文件有以下优点:

JSON支持分层结构,简化了文档中数据的存储和复杂关系的表示。

大多数编程语言都能够提供简化的JSON序列化库,并具有对JSON序列化/反序列化的内置支持。

JSON支持对象列表,这有助于避免将对象列表错误地转换为关系数据模型。

MongoDB、Couchbase、Azure Cosmos DB等NoSQL数据库均支持JSON文件格式。

现在大多数工具都内置了对JSON的支持。

3.拼花

Cloudera和Twitter在2013年开发了Parquet。它可以用作基于列的存储格式,并针对多列数据集进行了适当优化。因为它的数据存储在列中,所以它可以被高度压缩(它的压缩算法对包含在列中且信息熵较低的数据更有效),也可以进行分割操作。Parquet的创建者声称,这种存储格式非常适合处理大数据问题。

与CSV和JSON不同,Parquet是一个二进制文件,包含关于其内容的各种元数据。因此,Spark可以使用元数据来确定文件中的列名、压缩/编码模式、数据类型,甚至一些基本的统计信息,而无需读取和解析文件内容。此外,由于Parquet文件与列相关的元数据通常存储在文件的末尾,用户可以方便地立即快速写入信息。Parquet还优化了WORM示例(Write Once Read Many,参见)。虽然写入文件时速度很慢,但当用户读取时速度惊人,特别是在只访问列的一个子集时。如您所见,对于需要大量读取的工作负载,Parquet是一个很好的选择。对于需要操纵整行数据的用例,用户应该使用CSV或AVRO等格式。

Parquet在数据存储方面的优势包括:

因为它是一个柱状结构,所以Parquet只读取所需的列信息,从而减少了磁盘I/O消耗。这个概念叫做投影下推。

因为模式随着数据一起移动,所以数据是自描述的。

虽然主要是为HDFS创建的,但它的数据可以存储在其他文件系统中,如GlusterFs或NFS。

作为一个文件,您可以轻松地移动、备份、复制和使用Parquet。

Spark为读取和保存用户存储的文件提供了开箱即用的本地支持。

当以snappy等格式压缩时,Parquet可以实现75%的高压缩比。

在实践中,与其他类似的文件格式相比,这种格式具有最快的工作流读取速度。

Parquet非常适合需要对大量数据进行列摘要的数据仓库应用程序。

Parquet可以通过Avro API和Avro Schema进行读写。

通过提供谓词下推,Parquet可以进一步降低磁盘I/O的成本。

谓词下推/过滤器下推

谓词下推的基本思想是将查询的部分(例如,谓词)“推”到存储数据的位置。例如,当我们提供一些筛选条件时,数据存储将筛选记录,然后从磁盘读取数据。

谓词下推的优点:由于不再将整个数据读入内存并进行过滤,因此不需要大量内存,也不会产生过多的磁盘I/O。显然,整体性能有了显著提高。

如您所见,这种类型的方法通过更早地过滤掉不相关的数据,可以显著减少查询和处理时间。谓词下推可以根据处理框架执行不同的操作来优化查询。例如,在通过网络传输数据之前过滤数据,在将数据加载到内存之前过滤数据,或者跳过读取整个文件(文件块)等操作。

如今,大多数rdbms(包括Parquet和ORC等大数据存储格式)都能够遵循与谓词下推相关的概念。

投影下推

投影下推背后的基本思想是,当从存储中查询和读取数据时,并不是读取所有字段,而是只读取所需的列。通常,通过遵循这个概念,Parquets和ORC等列格式能够获得更好的I/O性能。

4. Avro

Hadoop工作组在2009年发布的Apache Avro是一种基于行的、高度碎片化的数据格式。Avro支持多种编程语言。它通常也被描述为类似于Java序列化的数据序列化系统。为了最小化文件大小并提高效率,它以JSON格式存储模式,以二进制格式存储数据。

Avro通过管理各种添加、丢失和更改的字段,为模式演化提供了强大的支持。这允许旧软件读取新数据,新软件读取旧数据。这对于频繁变化的数据很重要。

Avro通过模式schema的管理功能降低了不兼容的风险,schema允许在不同的时间独立更新不同的组件。同时,开发人员不必在应用程序中编写if-else语句来处理不同的体系结构版本,也不必查看旧代码来理解那些旧的体系结构。此外,模式的所有版本都存储在可读的JSON头中,以便开发人员更容易理解所有可用的字段。

如前所述,由于模式以JSON格式存储,数据以二进制格式存储,因此Avro是持久数据存储和有线传输的最低限度替代方案。此外,由于用户可以很容易地将新的数据线附加到Avro上,因此它通常是编写大型工作负载的首选格式。

优点:

Avro是一种独立于语言的数据序列化。

Avro将模式存储在文件的标题中,因此数据是自描述的。

Avro文件可以拆分和压缩,因此非常适合Hadoop生态系统中的数据存储。

因为Avro文件将负责读取的模式与负责写入的模式分开,所以它可以独立地添加新字段。

像序列文件一样,Avro文件包含同步标志来分离不同的块,以实现高可分割性。

可以使用像snappy这样的压缩格式来压缩不同的目标块。

总结

下表是四种文件格式的综合比较。

上面表格中的星号是:JSON在压缩为CSV时存在类似的可分离性问题。也就是说:当“wholeFile”选项设置为true时,JSON是不可分割的(参见SPARK-18352)。

CSV的写入速度最快;JSON易于人类阅读和理解;Parquet在读取列子集时速度最快;Avro在一次阅读所有专栏时速度最快。

JSON是Web通信中的标准。有了定义良好的模式,各种api和网站就可以一致地使用JSON进行通信。

为了满足大数据的需求,Parquet和Avro对可分离性进行了优化,以支持各种压缩和复杂的数据结构。但是,它们的可读性和写入速度都很差。

本文主要介绍了关于常见的数据文件格式(为你解析常用数据格式)的相关养殖或种植技术,综合百科栏目还介绍了该行业生产经营方式及经营管理,关注综合百科发展动向,注重系统性、科学性、实用性和先进性,内容全面新颖、重点突出、通俗易懂,全面给您讲解综合百科技术怎么管理的要点,是您综合百科致富的点金石。
以上文章来自互联网,不代表本人立场,如需删除,请注明该网址:http://seotea.com/article/1440978.html