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://blog.csdn.net/weixin_45594172/article/details/134881751
2.分不清结构化半结构化和非结构化数据?来看这篇!2. 非结构化数据 3. 半结构化数据 二、延伸问题:要如何处理这三种异构数据? 1、多元结构化数据的融合 2、针对半结构化、非结构化数据 一、什么是结构化、半结构化和非结构化数据? 1. 结构化数据 指关系模型数据,即以关系数据库表形式管理的数据,结合到典型场景中更容易理解,比如企业ERP、OA、HR里的数据。https://zhuanlan.zhihu.com/p/6334917409
3.一文读懂结构化非结构和半结构数据的定义特点和应用领域数据作为数字时代的核心资源,不仅仅是数字的表达,还包括文字、图像、视频等形式。而从数据的组成形态来看,我们可以将数据分为结构化、非结构化和半结构化三种类型。本文将深入探讨这三种数据形态的定义、特点以及应用领域,带您进入数据的多重世界。结构化数据的有序掌控https://cloud.tencent.com/developer/news/1114374
4.结构化数据半结构化数据和非结构化数据的区别?字体 字号 代码语言 https://www.cda.cn/discuss/post/details/5e550961696d851c782bf9b6
5.大数据的结构类型(结构化数据半结构化数据准结构化数据非结构化结构化数据类型包括预定义的数据类型、 格式和结构的数据, 常见的比如关系型数据库中数据表里的数据。 半结构化数据,具有可识别的模式并可以解析的文本数据文件, 比如XML数据文件。 准结构化数据,具有不规则数据格式的文本数据, 使用工具可以使之格式化, 比如说包含不一样数据值和格式的网站点击数据。 https://www.cnblogs.com/zlslch/p/7612646.html
6.结构化与非结构化的区别多源异构数据源半结构化数据②非结构化数据:指数据结构不规则或不完整,没有预定义的数据模型,不方便用数据库二维逻辑表来表现的数据。如word、pdf、ppt及各种格式的图片、视频等。 其实除了结构化和非结构化数据,还有一类是半结构化数据,那什么是半结构化数据? ③半结构化数据:指非关系模型的、有基本固定结构模式的数据,例如日志文件、XML文https://www.fanruan.com/bw/doc/154297
7.半结构化非结构化数据是什么?价值密度低是什么意思?非结构化一般指无法结构化的数据,没有固定的结构,例如图片,文件,视频等,大数据时代可以利用信息技术处理这类数据。 半结构化数据是指有基本固定的结构的数据,介于结构化数据和非结构化数据之间。如邮件系统就是半结构化数据:其中的收发件功能、主题等,有一定规律的数据属于结构化数据;而附件内容,如图片、音频等属于https://www.dongao.com/dy/zckjs_zl_53655/12803215.shtml
8.什么是结构化半结构化和非结构化数据?什么是结构化、半结构化和非结构化数据? ①结构化数据:指关系模型数据,即以关系数据库表形式管理的数据,结合到典型场景中更容易理解,比如企业ERP、OA、HR里的数据。 ②非结构化数据:指数据结构不规则或不完整,没有预定义的数据模型,不方便用数据库二维逻辑表来表现的数据。如word、pdf、ppt及各种格式的图片、视https://it.ynnu.edu.cn/info/1054/2898.htm
9.数据类型。A结构化数据B半结构化数据C非结构化数据视频数据是典型的( )数据类型。 A、结构化数据 B、半结构化数据 C、非结构化数据 D、都不是 点击查看答案进入小程序搜题 你可能喜欢 高浓碎浆机对造纸的碎解强 点击查看答案进入小程序搜题 螺旋夹紧机构是斜楔夹紧机构的变形,它对提高有效夹紧力和自锁性能都非常有利,所以,螺旋夹紧机构得到了很好的应用。( https://m.ppkao.com/wangke/daan/993684793c674f4794eabdf20b3ff729
10.结构化数据半结构化数据非结构化数据通过这样的数据格式,可以自由地表达很多有用的信息,包括自我描述信息(元数据)。所以,半结构化数据的扩展性是很好的。 非结构化数据 顾名思义,就是没有固定结构的数据。各种文档、图片、视频/音频等都属于非结构化数据。对于这类数据,我们一般直接整体进行存储,而且一般存储为二进制的数据格式。https://wenku.baidu.com/view/2b8c19a72bea81c758f5f61fb7360b4c2e3f2a2a.html
11.大数据时代往往以半结构化和非结构化数据为主。()大数据时代往往以半结构化和非结构化数据为主。()A.正确B.错误的答案是什么.用刷刷题APP,拍照搜索答疑.刷刷题(shuashuati.com)是专业的大学职业搜题找答案,刷题练习的工具.一键将文档转化为在线题库手机刷题,以提高学习效率,是学习的生产力工具https://www.shuashuati.com/ti/3404deac98e844cc8a3f88959b3e64ba.html
12.结构化半结构化和非结构化数据之间的差异这意味着不考虑非结构化数据的公司会错过许多有价值的商业智能。 由于这种杂乱无章的结构,机器和计算机要理解这一切是非常麻烦的,甚至是不可能的。 机器学习在教机器如何理解和从非结构化文档中提取数据方面取得了长足的进步。 什么是半结构化数据? 具有一定组织程度的数据是半结构化的,但是,这可能会有所不同。 这https://gleematic.com/chinese/differences-between-structured-semi-structured-and-unstructured-data/
13.大数据基础术语精粹来袭结构化数据(即行数据,存储在数据库里,可以用二维表结构来逻辑表达实现的数据)而言,不方便用数据库二维逻辑表来表现的数据即称为非结构化数据,包括所有格式的办公文档、文本、图片、标准通用标记语言下的子集XML、HTML、各类报表、图像和音频/视频信息等等。 http://www.mudan.gov.cn/2c908084831c4eb30183205259ac001f/2c908084831c4eb3018320df837d0020/1669185201282129920.html
14.BytesIo存储非结构化数据hadoop存储非结构化数据Bigdata:数据分三类 结构化数据:约束 半结构化数据:xml,json,yaml没有预定义的数据模型 非结构化数据:没有元数据;日志信息, 搜索引擎:搜索组件、索引组件(一般保存在分布式存储中) 蜘蛛程序;(爬取的数据都是非结构化,半结构化数据) 搜索引擎构建出倒排索引来检索, https://blog.51cto.com/u_14125/10549990
15.什么是结构化数据?结构化数据完整指南Elastic定义结构化数据,通过探索示例理解它与非结构化数据和半结构化数据有哪些不同,并了解如何使用结构化数据。https://www.elastic.co/cn/what-is/structured-data
16.什么是非结构化数据?我们所处理的数据分为三类,分别是规格化数据、半结构化数据以及非结构化数据,其中非结构化数据的定义为:呈现出不规则且无明显结构特征的数据。 -规格化数据:数据与字段相对应,数据以表格和数据集形式存在。 -半结构化数据:这种数据形态介于规格化数据和非结构化数据之间,方法是结合不明晰的规则来补足规格化数据的缺陷。https://www.filez.com/news/detail/faee08ab6bdc85c2d6216e4773bcc01f.html
17.非结构化数据怎么治理?最近遇到几个项目,都跟非结构化数据脱不开关系。老彭刚毕业的时候,做的是数据库的活儿,那都是结构化数据。后来有了hadoop技术,可以用来处理物联网、互联网的半结构化数据。真正做非结构化的场景还是比较少的,大多是在项目中选取一两个点给意思意思一下。https://www.niaogebiji.com/article-139650-1.html
18.Python爬虫数据的分类及json数据使用小结python对于半结构化数据,节点中属性的顺序是不重要的,不同的半结构化数据的属性的个数是不一样的。这样的数据格式,可以自由的表达很多有用的信息,包含自描述信息。所以半结构化数据的扩展性很好,特别适合于在互联网中大规模传播。 3.非结构化数据 就是没有固定的结构。各种文档,图片,视频或者音频都属于非结构化数据。https://www.jb51.net/article/208448.htm
19.对数据进行分类以下视频介绍半结构化数据和 NoSQL 数据存储选项: 非结构化数据 非结构化数据的组织结构未定义。 非结构化数据通常以文件格式提供,例如照片文件或视频文件。 视频文件本身可能具有整体结构且包含半结构化元数据,但是构成视频本身的数据是非结构化数据。 因此,将照片、视频和其他类似文件归类为非结构化数据。 https://docs.microsoft.com/zh-cn/learn/modules/choose-storage-approach-in-azure/2-classify-data
20.QuickBI支持多种数据源进行多维分析随着互联网的高速发展,数据量爆发式增长的同时,数据的存储形式也开始呈现出多样性,有结构化存储,如 Mysql, Oracle, SQLServer 等,半结构化甚至非结构化存储,如HBase,OSS 等。那么从事数据分析的人员就面临着从多种多样的数据存储形式中提取数据而后进行多维分析,这将是一件非常具有挑战的事情。而Quick BI 作为新一https://maimai.cn/article/detail?fid=1007780171&efid=4Y4M3SEMHRPmqy7F9SrY-w