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.结构化半结构化和非结构化数据腾讯云开发者社区结构化、半结构化和非结构化数据 一、结构化数据 结构化的数据是指可以使用关系型数据库表示和存储,表现为二维形式的数据。一般特点是:数据以行为单位,一行数据表示一个实体的信息,每一行数据的属性是相同的。举一个例子: 代码语言:javascript 复制 id name age gender1Liu Yi20male2Chen Er35female3Zhang San28https://cloud.tencent.com/developer/article/1351609
2.结构化数据半结构化数据和非结构化数据分析结构化数据也称作行数据,是由二维表结构来逻辑表达和实现的数据,严格地遵循数据格式与长度规范,主要通过关系型数据库进行存储和管理。与结构化数据相对的是不适于由数据库二维表来表现的非结构化数据,包括所有格式的办公文档、XML、HTML、各类报表、图片和音频、视频信息等。支持非结构化数据的数据库采用多值字段、了https://blog.csdn.net/weixin_45847421/article/details/115499725
3.结构化半结构化和非结构化数据都有哪些数据可以根据其格式和可访问性被分类为结构化数据、半结构化数据和非结构化数据。下面是每种数据类型的定义和一些例子: 结构化数据 结构化数据是指遵循固定格式的数据,通常存储在关系数据库中。这种数据类型易于搜索和组织,因为它遵循一定的模式(如表格),每个数据项都有明确的字段。 https://www.jianshu.com/p/7018b1bef624
4.结构化与非结构化的区别多源异构数据源半结构化数据②非结构化数据:指数据结构不规则或不完整,没有预定义的数据模型,不方便用数据库二维逻辑表来表现的数据。如word、pdf、ppt及各种格式的图片、视频等。 其实除了结构化和非结构化数据,还有一类是半结构化数据,那什么是半结构化数据? ③半结构化数据:指非关系模型的、有基本固定结构模式的数据,例如日志文件、XML文https://www.fanruan.com/bw/doc/154297
5.数据类型。A结构化数据B半结构化数据C非结构化数据视频数据是典型的( )数据类型。 A、结构化数据 B、半结构化数据 C、非结构化数据 D、都不是 点击查看答案进入小程序搜题 你可能喜欢 高浓碎浆机对造纸的碎解强 点击查看答案进入小程序搜题 螺旋夹紧机构是斜楔夹紧机构的变形,它对提高有效夹紧力和自锁性能都非常有利,所以,螺旋夹紧机构得到了很好的应用。( https://m.ppkao.com/wangke/daan/993684793c674f4794eabdf20b3ff729
6.什么是结构化半结构化和非结构化数据?什么是结构化、半结构化和非结构化数据? ①结构化数据:指关系模型数据,即以关系数据库表形式管理的数据,结合到典型场景中更容易理解,比如企业ERP、OA、HR里的数据。 ②非结构化数据:指数据结构不规则或不完整,没有预定义的数据模型,不方便用数据库二维逻辑表来表现的数据。如word、pdf、ppt及各种格式的图片、视https://it.ynnu.edu.cn/info/1054/2898.htm
7.半结构化非结构化数据是什么?价值密度低是什么意思?非结构化一般指无法结构化的数据,没有固定的结构,例如图片,文件,视频等,大数据时代可以利用信息技术处理这类数据。 半结构化数据是指有基本固定的结构的数据,介于结构化数据和非结构化数据之间。如邮件系统就是半结构化数据:其中的收发件功能、主题等,有一定规律的数据属于结构化数据;而附件内容,如图片、音频等属于https://www.dongao.com/dy/zckjs_zl_53655/12803215.shtml
8.BytesIo存储非结构化数据hadoop存储非结构化数据Bigdata:数据分三类 结构化数据:约束 半结构化数据:xml,json,yaml没有预定义的数据模型 非结构化数据:没有元数据;日志信息, 搜索引擎:搜索组件、索引组件(一般保存在分布式存储中) 蜘蛛程序;(爬取的数据都是非结构化,半结构化数据) 搜索引擎构建出倒排索引来检索, https://blog.51cto.com/u_14125/10549990
9.大数据时代往往以半结构化和非结构化数据为主。()大数据时代往往以半结构化和非结构化数据为主。()A.正确B.错误的答案是什么.用刷刷题APP,拍照搜索答疑.刷刷题(shuashuati.com)是专业的大学职业搜题找答案,刷题练习的工具.一键将文档转化为在线题库手机刷题,以提高学习效率,是学习的生产力工具https://www.shuashuati.com/ti/3404deac98e844cc8a3f88959b3e64ba.html
10.大数据基础术语精粹来袭结构化数据(即行数据,存储在数据库里,可以用二维表结构来逻辑表达实现的数据)而言,不方便用数据库二维逻辑表来表现的数据即称为非结构化数据,包括所有格式的办公文档、文本、图片、标准通用标记语言下的子集XML、HTML、各类报表、图像和音频/视频信息等等。 http://www.mudan.gov.cn/2c908084831c4eb30183205259ac001f/2c908084831c4eb3018320df837d0020/1669185201282129920.html
11.什么是结构化数据?结构化数据完整指南Elastic定义结构化数据,通过探索示例理解它与非结构化数据和半结构化数据有哪些不同,并了解如何使用结构化数据。https://www.elastic.co/cn/what-is/structured-data
12.Python爬虫数据的分类及json数据使用小结python对于半结构化数据,节点中属性的顺序是不重要的,不同的半结构化数据的属性的个数是不一样的。这样的数据格式,可以自由的表达很多有用的信息,包含自描述信息。所以半结构化数据的扩展性很好,特别适合于在互联网中大规模传播。 3.非结构化数据 就是没有固定的结构。各种文档,图片,视频或者音频都属于非结构化数据。https://www.jb51.net/article/208448.htm
13.大数据采集的数据类型有哪些对于半结构化数据的处理和分析,需要采用更加灵活的数据处理技术和工具,如自然语言处理(NLP)、文本挖掘、图像处理等技术。通过对半结构化数据的处理和分析,可以帮助企业更好地了解客户需求、市场趋势和业务状况等信息,从而进行更加精准的市场营销和决策。三、非结构化数据非结构化数据是指没有固定结构和含义的数据,如https://aiqicha.baidu.com/qifuknowledge/detail?id=10039928171
14.QuickBI支持多种数据源进行多维分析随着互联网的高速发展,数据量爆发式增长的同时,数据的存储形式也开始呈现出多样性,有结构化存储,如 Mysql, Oracle, SQLServer 等,半结构化甚至非结构化存储,如HBase,OSS 等。那么从事数据分析的人员就面临着从多种多样的数据存储形式中提取数据而后进行多维分析,这将是一件非常具有挑战的事情。而Quick BI 作为新一https://maimai.cn/article/detail?fid=1007780171&efid=4Y4M3SEMHRPmqy7F9SrY-w
15.对数据进行分类以下视频介绍半结构化数据和 NoSQL 数据存储选项: 非结构化数据 非结构化数据的组织结构未定义。 非结构化数据通常以文件格式提供,例如照片文件或视频文件。 视频文件本身可能具有整体结构且包含半结构化元数据,但是构成视频本身的数据是非结构化数据。 因此,将照片、视频和其他类似文件归类为非结构化数据。 https://docs.microsoft.com/zh-cn/learn/modules/choose-storage-approach-in-azure/2-classify-data
16.银行专岗计算机考试大纲(三)大数据的结构类型 大数据包括结构化、半结构化和非结构化数据,非结构化数据越来越成为数据的主要部分。据IDC(互联网内容提供商)的调查报告显示,企业中80%的数据都是非结构化数据。 1.结构化数据 包括预定义的数据类型、格式和结构的数据。如:关系数据库中的数据。 2.半结构化数据 具有可识别的模式并可以解析http://www.yinhangzhaopin.com/yhks/yhbs/1/96117.html
17.行政管理论文15篇3.2对非结构化和半结构化数据的采集与应用 缺乏技术支撑像图像摘要技术、互联网搜索拦截技术、图像识别技术、磁盘恢复与解密技术、数字认证技术等非结构化和半结构化的应用和数据,在工商系统既无采集也无积累。由于没有充足完整的数据信息量做支撑,工商信息化还处于相对简单和小规模的阶段,依托海量数据或大数据的深度挖https://www.ruiwen.com/lunwen/6220159.html