OSS数据湖实践——parquet格式

丰富的线上&线下活动,深入探索云世界

做任务,得社区积分和周边

最真实的开发者用云体验

让每位学生受益于普惠算力

让创作激发创新

资深技术专家手把手带教

遇见技术追梦人

技术交流,直击现场

海量开发者使用工具、手册,免费下载

极速、全面、稳定、安全的开源镜像

开发手册、白皮书、案例集等实战精华

为开发者定制的Chrome浏览器插件

结构化数据源对数据定义了一种模式。通过这些关于底层数据的额外信息,结构化数据源提供高效的存储和性能。例如,列式数据存储Parquet和ORC,使得从一个列子集中提取数据更加容易。当数据查询只需要获取一少部分列的数据时,通过遍历每行数据的方式需要查询出过多的数据。基于行的存储格式,如Avro通过高效的序列化存储数据提供了存储优势。但是,这种优势是以复杂性为代价的。例如,由于结构不够灵活,模式转换将成为挑战。

半结构化数据源是每行记录一个结构,但不需要对整体记录有一个全局的模式定义。因此,每行记录是通过其自身的模式信息对其进行扩充。JSON和XML就是其中最流行的例子。半结构化数据的优势在于通过每行记录自身的描述信息,增强了展示数据信息的灵活性。由于有很多轻量级的解析器用于处理这些记录,因此半结构化数据格式在很多应用中普遍被使用,并且在可读性上存在优势。但是,它的主要缺陷也在于会产生额外的解析开销,不能专门应用于即席查询。

列式存储(Column-orientedStorage)并不是一项新技术,最早可以追溯到1983年的论文Cantor。然而,受限于早期的硬件条件和使用场景,主流的事务型数据库(OLTP)大多采用行式存储,直到近几年分析型数据库(OLAP)的兴起,列式存储这一概念又变得流行。总的来说,列式存储的优势一方面体现在存储上能节约空间、减少IO,另一方面依靠列式数据结构做了计算上的优化。

行式存储通过逐行组织数据,所有的数据在存储介质上通过首位相连、逐条存储,行式存储是一种传统的组织数据的方法。

ApacheParquet是Hadoop生态系统中通用的列式存储格式,独立于数据处理框架、数据模型、编程语言;Parquet的灵感来自于2010年Google发表的Dremel论文,文中介绍了一种支持嵌套结构的存储格式,并且使用了列式存储的方式提升查询性能。

如果有大批量的Json格式数据需要转为Parquet格式数据,参考以下代码;

importosimportmultiprocessingfromjson2parquetimportconvert_jsondefsplit_file(file_name,path):result_path="parquet/"file_path=path+file_nameres_path=result_path+file_name+".parquet"convert_json(file_path,res_path)defmain():path="data/"file_list=os.listdir(path)pool=multiprocessing.Pool(processes=20)forfile_nameinfile_list:pool.apply_async(split_file,(file_name,path,))pool.close()pool.join()if__name__=='__main__':main()Parquet格式运行任务使用parquet数据格式,来运行作业,使用sparkreadapi中的parquet接口;其中包括可以读指定的单个文件,或者一组文件;

spark.read.parquet("yourparquetfileorfiles")读取单个parquet文件方法

/***LoadsaParquetfile,returningtheresultasa`DataFrame`.Seethedocumentation*ontheotheroverloaded`parquet()`methodformoredetails.**@since2.0.0*/defparquet(path:String):DataFrame={//Thismethodensuresthatcallsthatexplicitneedsingleargumentworks,seeSPARK-16009parquet(Seq(path):_*)}读取一组paruqet文件方法

/***LoadsaParquetfile,returningtheresultasa`DataFrame`.**YoucansetthefollowingParquet-specificoption(s)forreadingParquetfiles:*

    *
  • `mergeSchema`(defaultisthevaluespecifiedin`spark.sql.parquet.mergeSchema`):sets*whetherweshouldmergeschemascollectedfromallParquetpart-files.Thiswilloverride*`spark.sql.parquet.mergeSchema`.
  • *
*@since1.4.0*/@scala.annotation.varargsdefparquet(paths:String*):DataFrame={format("parquet").load(paths:_*)}简单作业使用parquet数据源示例

importorg.apache.spark.sql.{Row,SparkSession}importorg.apache.spark.sql.expressions.Windowimportorg.apache.spark.sql.functions.row_numberobjectOSSExample{defmain(args:Array[String]):Unit={valspark=SparkSession.builder.appName("OSSExample").getOrCreate()valdata=spark.read.parquet.load("oss://your-bucket-name/parquetfile")valdata1=data.groupBy("subject","level").count()valwindow=Window.partitionBy("subject").orderBy(org.apache.spark.sql.functions.col("count").desc)valdata2=data1.withColumn("topn",row_number().over(window)).where("topn<=1")data2.write.format("parquet").save("yourstorepath")}}作业性能对比

1、可以跳过不符合条件的数据,只读取需要的数据,降低IO数据量,提升作业运行性能;2、压缩编码可以降低磁盘存储空间。由于同一列的数据类型是一样的,可以使用更高效的压缩编码(例如RunLengthEncoding和DeltaEncoding)进一步节约存储空间;这样能够更少的使用OSS存储空间,减少数据存储成本;3、只读取需要的列,支持向量运算,能够获取更好的扫描性能。

THE END
1.了解新式数据仓库的文件格式和结构请务必了解各种文件类型,了解哪种类型用于原始存储,哪种类型用于优化的版本,以便进行分析查询。 其他设计注意事项包括用于优化查询和数据加载活动的层次结构。 本单元介绍了文件类型及其最佳用例,以及如何在数据湖中最好地组织它们。 支持的用于成批引入原始数据的文件https://docs.microsoft.com/zh-cn/training/modules/design-modern-data-warehouse-using-azure-synapse-analytics/6a-understand-file-formats-structure-modern-data-warehouse/
2.数据架构包含数据流向吗mob6454cc7aec82的技术博客一,HBASE 数据库 1,非关系型数据库 2,hadoop databases 简称 hbase ,是一个高可靠性,高性能,面向列(按照列,在添加数据时候,进行创建表结构),可伸缩,实时读写的分布式数据库 3,主要是用来存储非结构化和半结构化的松散模型 二,数据模型 Row Key: https://blog.51cto.com/u_16099345/12887436
3.昆明城市学院《数据库原理及应用》2021以下关于数据库存储结构选择的描述,哪一项是不准确的?()A.可以将图像数据以二进制大对象(BLOB)的形式直接存储在数据库表中B.将图像数据存储在文件系统中,并在数据库中保存文件路径是一种常见的方式C.对于频繁访问的小图像数据,直接存储在数据库中可能比存储在文件系统中更高效D.无论图像数据的大小和访问频率如何https://www.renrendoc.com/paper/369555940.html
4.数据存储形式与载体有哪些数据存储的选择考量 选择合适的数据存储形式与载体需要考虑数据类型、数据量、访问频率、安全性和成本等因素。例如,结构化数据通常使用数据库系统进行管理,而非结构化数据则可能更适合使用对象存储。此外,数据的安全措施包括加密、访问控制和备份等。 数据存储形式与载体的选择对于确保数据的安全、高效和成本效益至关重要。http://www.saifanbox.com/e/wap/show.php?classid=12&id=92954
5.什么是非结构化数据和结构化数据结构化存储和非结构化存储没有预定义的格式:非结构化数据的存储形式非常灵活,没有固定的行和列。 多样性:可以包括文本文件、PDF 文档、图片、视频、社交媒体数据等。 复杂的处理方式:处理非结构化数据需要使用更复杂的技术,如自然语言处理(NLP)或图像识别技术。 无法直接使用传统数据库存储:非结构化数据通常存储在文件系统或分布式存储系统中https://blog.csdn.net/m0_55213370/article/details/141938577
6.非结构化数据有哪些而非结构化数据则是指那些不适合存储在传统数据库中的数据,它们通常以文本、图像、音频、视频等形式存在。https://www.gokuai.com/press/a573
7.非结构化数据包括哪些内容在信息技术快速发展的今天,数据已经成为我们生活和工作中不可或缺的一部分。数据大致可以分为结构化数据和非结构化数据两大类。结构化数据主要指的是具有固定格式和结构的数据,如数据库中的表格数据。而非结构化数据,由于其形式多样、结构不固定,一直是数据处理和分析的难点和热点。 https://www.zhuflow.cn/news/information/1358.html
8.手把手教程MinIO对象存储高效入门MinIO对象存储对象存储由于块存储和文件存储的存储特点,并不适合公有云存储,一般只适合在局域网内部使用,另外随着互联网需求的发展,数据量爆炸式的增长,不断吞食着存储资源;数据类型也逐渐多元化,各类非结构化的数据占比显著增加,如何应对新的存储需求?对象存储应运而生。 存储协议 https://juejin.cn/post/7269396835659710523
9.存储层数据压缩与去重技术:提升存储效率与成本效益的关键存储层数据压缩技术是指在数据存储过程中,通过特定的算法和策略,减少数据占用的存储空间,从而提高存储效率的技术。数据压缩技术通常分为无损压缩和有损压缩两大类。 无损压缩:无损压缩是指在压缩过程中,不丢失原始数据的任何信息,能够完全恢复原始数据的压缩方法。常见的无损压缩算法包括Huffman编码、LZ77/LZ78算法、算术https://www.ctyun.cn/developer/article/623414089322565
10.国内综合档案馆电子档案存储情况分析根据调研,档案部门所使用的存储格式近20种,使用比例较高的存储格式有:TXT、DOC、XML、PDF、TIFF、JPEG、DBF、XLS、WAV、MP3、AVI、MP4等文件格式,这些不方便用数据库二维逻辑表来表现的数据都是非结构化的数据,大量的非结构化数据给电子档案存储的性能、安全和稳定性等提出了很高的要求。此外,非结构化数据的存储多https://www.yueyang.gov.cn/daj/6630/30097/content_1749816.html
11.什么是非结构化数据?首先,非结构化数据缺乏明确的模式和格式,需要通过特定的技术和工具进行解析和处理。其次,非结构化数据的数量庞大且多样性,常常以海量的形式存在,需要适当的存储和处理方法来应对。此外,非结构化数据的来源也很丰富,包括文本、图像、音频、视频等,进一步增加了数据的复杂性。https://www.filez.com/news/detail/974a6ef096d0b214bf7e13a2218d4e30.html
12.数据湖存储非结构化数据星环科技为您提供数据湖存储非结构化数据相关内容,帮助您快速了解数据湖存储非结构化数据。如果想了解更多数据湖存储非结构化数据资讯,请访问星环科技官网(www.transwarp.cn)查看更多丰富数据湖存储非结构化数据内容。https://www.transwarp.cn/keyword-detail/52484-1
13.采购数据分析报告模板(10篇)进入会计信息的除了原始凭证录入结构化数据以外,还忽略了与企业经济活动密切相关、富含经济价值的非结构化数据。面对数据存储分散、数据总量大、增长速度快、蕴含信息多的非结构化数据,缺乏有效的智能化处理,因而没有纳入会计信息系统,导致绝大部分有丰富价值的非结构化数据不能够体现于会计信息控制流程中,不能有效挖掘它https://www.haofabiao.com/haowen/6588.html
14.什么是对象存储器?什么是对象存储器? 了解 IBM 如何帮助企业处理对象存储器 对象存储器通常称为基于对象的存储器,是一种用于处理大量非结构化数据的数据存储架构。这些数据无法轻易整理到包含行列的传统关系数据库中,或不符合其要求。当今的互联网通信数据的大部分都是非结构化的。其中包括电子邮件、视频、照片、Web 页面、音频文件、https://www.ibm.com/cn-zh/topics/object-storage
15.了解结构化数据与非结构化数据的差异结构化和非结构化数据在许多方面都有所不同。两者都使用不同的工具和方法来处理和分析信息。 下面是结构化数据与非结构化数据的简要比较表。 结构化数据非结构化数据 以特定的方式和固定的格式组织。没有组织,没有固定的格式。 存储在关系数据库或电子表格中。不适合关系数据库或电子表格的各种数据格式。 https://www.360doc.cn/article/68899713_1124424478.html
16.IBMCloudObjectStorage在银行业非结构化数据存储嘲下的对象1. 对象存储在银行业的应用机会 随着银行业IT技术的快速发展和业务的不断升级变革,业务应用系统产生的非结构化数据(包括文件、图片、音视频文件等)的规模也越来越大,银行业非结构化数据呈指数式爆发式增长。目前使用非结构化数据的主要系统包括内容管理平台、后督影像系统、身份验证、柜员办业务扫描件等需要用到影像图https://redhat.talkwithtrend.com/Article/242823
17.非结构化数据管理专家基于文件云实同统一文件平台硬件和网络管理、统一存储管理、实现数据存储生命周期管理,大幅度节省投入和运维 07 安全部门 基于文件云实现非结构化数据资产安全治理&统一安全管控 08 软件开发中心 基于文件云非结构化中台内容存储、内容计算、内容安全相关API 二次开发, 大幅度降低应用开发成本 https://www.linkapp.cn/products/42/0
18.详解Python中数据的多种存储形式python1 JSON 文件存储 JSON,全称为 JavaScript Object Notation, 也就是 JavaScript 对象标记,它通过对象和数组的组合来表示数据,构造简洁但是结构化程度非常高,是一种轻量级的数据交换格式。本节中,我们就来了解如何利用 Python 保存数据到 JSON 文件。 1. 对象和数组 在JavaScript 语言中,一切都是对象。因此,任何支持的https://www.jb51.net/article/283444.htm
19.非结构化数据应用调研6. 如果有纸质资源,现有的纸质资源是否都有相对应电子文件: 是否 7. (非结构化)数据资源在部门内主要用途有:(可多选,无下选项可自填) 优化人力资源组织结构教职工培训与考核科研申报其他 8. 目前已有的非结构化数据的存储方式:(可多选,无下选项可自填) 移动硬盘网盘电脑存储服务器现有的网络平台其他 9. 现有https://www.wjx.cn/xz/170049874.aspx
20.结构化数据vs.非结构化数据基础设施CIO时代网结构化数据与非结构化数据:有什么区别? 除了存储在关系数据库和存储在一个关系数据库之外的明显区别之外,最大的区别在于分析结构化数据与非结构化数据的便利性。针对结构化数据存在成熟的分析工具,但用于挖掘非结构化数据的分析工具正处于萌芽和发展阶段。 https://www.ciotimes.com/Infrastructure/147367.html
21.干货如何在海量文件系统中选择合适自己的文件系统半结构化数据: 介于结构化(如关系型数据库中的数据)和非结构数据(音频、视频、图片等)之间的一种数据,它可以是自描述的(即结构可以是自定义,格式并不固定,如相同的键值下存储的数据可能是数值、字符、列表等,结构和内容是混在一起的,无明显区分),常见的如 JSON、XML,HTML 文档等。 https://xie.infoq.cn/article/3af980b8e0f04a816f98b9255
22.什么是结构化数据和非结构化数据?零代码知识中心顾名思义,其他所有不能按照行列格式整齐排列的数据都是结构化数据,如录音、视频片段、图像、社交媒体帖子、电子邮件内容、客户服务聊天记录、机器传感器数据等等。据 Gartner 估计,非结构化数据约占企业所有数据的 80%,来自其他机构的估计甚至更高。 非结构化数据可以由人类或机器生成。人类生成的信息包括音频文件、视频https://www.jiandaoyun.com/fe/gdyqhj/