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.结构化半结构化和非结构化数据腾讯云开发者社区结构化、半结构化和非结构化数据 一、结构化数据 结构化的数据是指可以使用关系型数据库表示和存储,表现为二维形式的数据。一般特点是:数据以行为单位,一行数据表示一个实体的信息,每一行数据的属性是相同的。举一个例子: 代码语言:javascript 复制 id name age gender1Liu Yi20male2Chen Er35female3Zhang San28https://cloud.tencent.com/developer/article/1351609
3.什么是结构化半结构化和非结构化数据?什么是结构化、半结构化和非结构化数据? ①结构化数据:指关系模型数据,即以关系数据库表形式管理的数据,结合到典型场景中更容易理解,比如企业ERP、OA、HR里的数据。 ②非结构化数据:指数据结构不规则或不完整,没有预定义的数据模型,不方便用数据库二维逻辑表来表现的数据。如word、pdf、ppt及各种格式的图片、视https://it.ynnu.edu.cn/info/1054/2898.htm
4.结构化与非结构化的区别多源异构数据源半结构化数据②非结构化数据:指数据结构不规则或不完整,没有预定义的数据模型,不方便用数据库二维逻辑表来表现的数据。如word、pdf、ppt及各种格式的图片、视频等。 其实除了结构化和非结构化数据,还有一类是半结构化数据,那什么是半结构化数据? ③半结构化数据:指非关系模型的、有基本固定结构模式的数据,例如日志文件、XML文https://www.fanruan.com/bw/doc/154297
5.规范程度上来看可以划分为结构化面试非结构化面试和半结构刷刷题APP(shuashuati.com)是专业的大学生刷题搜题拍题答疑工具,刷刷题提供面试的基本类型,从其操作规范程度上来看可以划分为结构化面试、非结构化面试和半结构化面试。()A.正确B.错误的答案解析,刷刷题为用户提供专业的考试题库练习。一分钟将考试题Word文档/Excel文档/https://www.shuashuati.com/ti/625eceb4507545e08dcea5d567561280.html?fm=bdbds2394ac36ce9879729a73c11647e3f5c5
6.半结构化非结构化数据是什么?价值密度低是什么意思?非结构化一般指无法结构化的数据,没有固定的结构,例如图片,文件,视频等,大数据时代可以利用信息技术处理这类数据。 半结构化数据是指有基本固定的结构的数据,介于结构化数据和非结构化数据之间。如邮件系统就是半结构化数据:其中的收发件功能、主题等,有一定规律的数据属于结构化数据;而附件内容,如图片、音频等属于https://www.dongao.com/dy/zckjs_zl_53655/12803215.shtml
7.结构化面试和非结构化面试的区别1.结构化面试可以减少盲目性和随意性,其特点是客观,有效性高,但对面试设计、组织以及主试官的培训程度要求都比较高。2.半结构化面试和非结构化面试的特点是简单、容易组织,但主考官的随意性较大,效度较低,有时甚至低于0.20。总结:半结构化面试没有人数上限制,随机性大,开放性命题多。扩展资料:结构化面试是指https://edu.iask.sina.com.cn/jy/3zzl1bTtYXK.html
8.结构化数据vs.非结构化数据基础设施CIO时代网半结构化数据维护用于识别单独数据元素的内部标记和标签,从而实现信息分组和层次结构。文档和数据库都可以是半结构化的。这种类型的数据只代表结构化/半结构化/非结构化数据的5%-10%,但具有关键的业务用例。 电子邮件是半结构化数据类型的一个非常常见的例子。而更高级的分析工具对于线程跟踪,近似重复数据删除和概念搜https://www.ciotimes.com/Infrastructure/147367.html
9.大数据基础术语精粹来袭结构化数据(即行数据,存储在数据库里,可以用二维表结构来逻辑表达实现的数据)而言,不方便用数据库二维逻辑表来表现的数据即称为非结构化数据,包括所有格式的办公文档、文本、图片、标准通用标记语言下的子集XML、HTML、各类报表、图像和音频/视频信息等等。 http://www.mudan.gov.cn/2c908084831c4eb30183205259ac001f/2c908084831c4eb3018320df837d0020/1669185201282129920.html
10.2024国考面试:什么是半结构化面试半结构化面试是对人才测评要素、评价标准、确定评价人员、实施程序和部分试题统一要求的基础上,评价人员基于职位胜任特征和应试者特点向应试者追加提问的面试方法。半结构化面试是介于非结构化面试和结构化面试之间的一种形式。它结合两者的优点,有效避免了单一方法上的不足。 https://gs.offcn.com/html/2023/12/274586.html
11.半结构化面试题及答案20220925195850.docx半结构化面试题及答案 半结构化面试是介于非结构化面试和结构化面试之间的一种形 式。在此种面试构成要素中,有的内容作统一的要求,有的内容则 不作统一的规定,下面给大家整理了半结构化面试题及答案,一起 来看看吧! 半结构化面试题及答案 【答题思路】 一、请你自我介绍一下 1、这是面试的必考题目。 2、https://m.book118.com/html/2022/0925/8041055050004142.shtm
12.按数据来源分,可将数据分为如下几个类型按数据类型可分为:结构化数据、半结构化数据、非结构化数据。 (1)结构化数据 一般是从内部数据库和外部开放数据库接口中获得,一般都是存储产品业务运营数据以及用户操作的结果数据,比如注册用户数、下单量、完单量等数据。这类数据格式规范,典型代表就是关系数据库中的数据,可以用二维表来存储,有固定字段数,每个字https://www.weihaoyi.com/news-details-3574.html
13.什么是结构化数据?结构化数据完整指南Elastic定义结构化数据,通过探索示例理解它与非结构化数据和半结构化数据有哪些不同,并了解如何使用结构化数据。https://www.elastic.co/cn/what-is/structured-data
14.行政管理论文15篇缺乏技术支撑像图像摘要技术、互联网搜索拦截技术、图像识别技术、磁盘恢复与解密技术、数字认证技术等非结构化和半结构化的应用和数据,在工商系统既无采集也无积累。由于没有充足完整的数据信息量做支撑,工商信息化还处于相对简单和小规模的阶段,依托海量数据或大数据的深度挖掘应用、动态应用暂时还不存在。 https://www.ruiwen.com/lunwen/6220159.html