解析四种大数据文件格式
2019/11/18 13:20:47
 
 
在本文中,我们将通过Apache Spark,来向您介绍上述四种大数据文件格式的各种属性,及其优缺点比较。
 
【线上直播】11月21日晚8点贝壳技术总监侯圣文《数据安全之数据库安全黄金法则》
【51CTO.com快译】众所周知,Apache Spark支持许多种不同的数据格式,其中包括:无处不在的CSV格式、对于Web友好的JSON格式、以及常被用于大数据分析的Apache Parquet和Apache Avro。 
 
在本文中,我们将通过Apache Spark,来向您介绍上述四种大数据文件格式的各种属性,及其优缺点比较。
1、CSV
CSV(Comma-Separated Values,逗号分隔值)文件,通常被用于在使用纯文本的系统之间,交换表格类型的数据。CSV是一种基于行的文件格式。也就是说,此类文件中的每一行都对应到数据表中的具体某一行。通常,CSV文件里包含有一个标题行,该标题行提供了数据的列名。如果没有标题行的话,该文件将被视为已部分完成了结构化工作。
单个CSV文件往往无法显示层次化的结构、或数据关系。而具体的数据连接关系往往需要通常多个CSV文件进行组织。各种外键(Foreign key)一般被存储在一个或多个文件的多个列中。不过这些文件之间的链接并非由其格式本身来表示。此外,由于并未完全标准化,因此在CSV格式文件中,您可以使用逗号以外的界定符,例如:制表符(tabs)或空格。
CSV文件的另一个特性是:只有处于未压缩的原始文件状态、或是运用诸如bzip2(https://en.wikipedia.org/wiki/Bzip2)或lzo(https://ru.wikipedia.org/wiki/LZO)之类的解压缩工具时,CSV文件才能够被拆分(注意:lzo需要进行索引之后,方可执行拆分)。
优点:  CSV易于人工阅读,也易于手动编辑。 CSV提供了一种简单明了的信息模式(schema)。 几乎所有现有的应用程序都能够处理CSV文件。 CSV文件比较易于实现和解析。 对于XML而言,您需要在每一行的每一列中分别添加开始与结束标签;而CSV比较简约,您只需一次性写入列标题即可。 
缺点:  由于处置的是平面数据,因此需要事先对复杂的数据结构进行格式上的转换。 由于不支持列的类型,因此在文本列和数字列之间并无区别。 并无表示二进制数据的标准方法。 由于NULL和引号之间并无区别,因此导入CSV时可能会出现问题。 对于特殊字符的支持性较差。 缺乏通用的标准。 
尽管存在着一定的局限性,但CSV文件仍然是数据共享领域的上乘之选。它经常被广泛地用于各类业务应用、消费者行业、以及科学分析程序中。当前,大多数批处理和流数据处理模块(如Spark和Hadoop),都能够支持CSV文件的序列化与反序列化。它们在读取时提供了添加schema的方法。
2、JSON格式
JSON数据(JavaScript object notation,对象表示法)是以部分结构化的格式,表示各种键值(key-value)对。与XML不同,JSON通常可以按照分层的格式存储数据,即:子数据可以由父数据来显示。而与XML相同的是,它们在格式上都具有自我描述性(self-describing),可以被用户直接读取。不过,JSON文档通常要小得多。随着基于REST的Web服务的大量出现,JSON文档被频繁地使用在网络通信中。
由于许多类型的数据传输都已经用到了JSON格式,因此目前大多数的Web编程语言都能够支持JSON,或者通过使用外部库,来对JSON数据进行序列化和反序列化。正是有了这种支持,JSON能够通过显示数据结构,帮助用户实现热数据(hot data)的格式转换、以及冷数据(cold data)存储所涉及到的各种逻辑格式。
目前,许多批处理与流数据处理模块,都能够原生地支持JSON的序列化和反序列化。JSON文档中包含的数据,不但最终能够以性能更为优化的格式(如Parquet或Avro)予以存储,而且JSON所提供的原始数据类型,对于按需进行数据重新处理的任务也是非常重要的。
JSON文件具有如下优点:  JSON支持分

下一页
返回列表
返回首页
©2024 人工智能世界_专注人工智能领域,汇集人工智能技术资料 电脑版
Powered by iwms