parquet和orc

parquet和orc,第1张

Parquet文件是自解析的,文件中包括该文件的数据和元数据。在HDFS文件系统和Parquet文件中存在如下几个概念:

1)HDFS块(Block):它是HDFS上的最小的副本单位,HDFS会把一个Block存储在本地的一个文件并且维护分散在不同的机器上的多个副本,通常情况下一个Block的大小为256M、512M等。

2)HDFS文件(File):一个HDFS的文件,包括数据和元数据,数据分散存储在多个Block中。

3)行组(Row Group):按照行将数据物理上划分为多个单元,每一个行组包含一定的行数,在一个HDFS文件中至少存储一个行组,Parquet读写的时候会将整个行组缓存在内存中,所以如果每一个行组的大小是由内存大的小决定的。

4)列块(Column Chunk):在一个行组中每一列保存在一个列块中,行组中的所有列连续的存储在这个行组文件中。不同的列块可能使用不同的算法进行压缩。

5)页(Page):每一个列块划分为多个页,一个页是最小的编码的单位,在同一个列块的不同页可能使用不同的编码方式。

Parquet文件的格式如下图所示:

可以看出,存储格式中元数据索引信息是被存储在最后的,所以当读取某一行的数据的时候,就需要去定位最后的索引信息,最后才能去读取对应的行数据。元数据包括 Parquet 原始类型定义、Page类型、编码类型、压缩类型等等。

Parquet 支持嵌套结构的数据模型,而非扁平式的数据模型,这是 Parquet 相对其他列存比如 ORC 的一大特点或优势。支持嵌套式结构,意味着 Parquet 能够很好的将诸如 Protobuf,thrift,json 等对象模型进行列式存储。

Parquet 的数据模型也是 schema 表达方式,用关键字 message 表示。每个字段包含三个属性,repetition属性(required/repeated/optional)、数据类型(primitive基本类型/group复杂类型)及字段名。如:

和Parquet类似,ORC文件也是以二进制方式存储的,所以是不可以直接读取,ORC文件也是自解析的,它包含许多的元数据,这些元数据都是同构ProtoBuffer进行序列化的。ORC的文件结构如下图,其中涉及到如下的概念:

ORC文件:保存在文件系统上的普通二进制文件,一个ORC文件中可以包含多个stripe,每一个stripe包含多条记录,这些记录按照列进行独立存储,对应到Parquet中的row

group的概念。

文件级元数据:包括文件的描述信息PostScript、文件meta信息(包括整个文件的统计信息)、所有stripe的信息和文件schema信息。

stripe:一组行形成一个stripe,每次读取文件是以行组为单位的,一般为HDFS的块大小,保存了每一列的索引和数据。

stripe元数据:保存stripe的位置、每一个列的在该stripe的统计信息以及所有的stream类型和位置。

row group:索引的最小单位,一个stripe中包含多个row group,默认为10000个值组成。

stream:一个stream表示文件中一段有效的数据,包括索引和数据两类。索引stream保存每一个row group的位置和统计信息,数据stream包括多种类型的数据,具体需要哪几种是由该列类型和编码方式决定。

在ORC文件中保存了三个层级的统计信息,分别为文件级别、stripe级别和row group级别的,他们都可以用来根据Search ARGuments(谓词下推条件)判断是否可以跳过某些数据,在统计信息中都包含成员数和是否有null值,并且对于不同类型的数据设置一些特定的统计信息。

读取ORC文件是从尾部开始的,第一次读取16KB的大小,尽可能的将Postscript和Footer数据都读入内存。文件的最后一个字节保存着PostScript的长度,它的长度不会超过256字节,PostScript中保存着整个文件的元数据信息,它包括文件的压缩格式、文件内部每一个压缩块的最大长度(每次分配内存的大小)、Footer长度,以及一些版本信息。在Postscript和Footer之间存储着整个文件的统计信息(上图中未画出),这部分的统计信息包括每一个stripe中每一列的信息,主要统计成员数、最大值、最小值、是否有空值等。

接下来读取文件的Footer信息,它包含了每一个stripe的长度和偏移量,该文件的schema信息(将schema树按照schema中的编号保存在数组中)、整个文件的统计信息以及每一个row group的行数。

处理stripe时首先从Footer中获取每一个stripe的其实位置和长度、每一个stripe的Footer数据(元数据,记录了index和data的的长度),整个striper被分为index和data两部分,stripe内部是按照row group进行分块的(每一个row group中多少条记录在文件的Footer中存储),row group内部按列存储。每一个row group由多个stream保存数据和索引信息。每一个stream的数据会根据该列的类型使用特定的压缩算法保存。在ORC中存在如下几种stream类型:

PRESENT:每一个成员值在这个stream中保持一位(bit)用于标示该值是否为NULL,通过它可以只记录部位NULL的值

DATA:该列的中属于当前stripe的成员值。

LENGTH:每一个成员的长度,这个是针对string类型的列才有的。

DICTIONARY_DATA:对string类型数据编码之后字典的内容。

SECONDARY:存储Decimal、timestamp类型的小数或者纳秒数等。

ROW_INDEX:保存stripe中每一个row group的统计信息和每一个row group起始位置信息。

在初始化阶段获取全部的元数据之后,可以通过includes数组指定需要读取的列编号,它是一个boolean数组,如果不指定则读取全部的列,还可以通过传递SearchArgument参数指定过滤条件,根据元数据首先读取每一个stripe中的index信息,然后根据index中统计信息以及SearchArgument参数确定需要读取的row group编号,再根据includes数据决定需要从这些row group中读取的列,通过这两层的过滤需要读取的数据只是整个stripe多个小段的区间,然后ORC会尽可能合并多个离散的区间尽可能的减少I/O次数。然后再根据index中保存的下一个row group的位置信息调至该stripe中第一个需要读取的row group中。

ORC文件格式只支持读取指定字段,还不支持只读取特殊字段类型中的指定部分。

使用ORC文件格式时,用户可以使用HDFS的每一个block存储ORC文件的一个stripe。对于一个ORC文件来说,stripe的大小一般需要设置得比HDFS的block小,如果不这样的话,一个stripe就会分别在HDFS的多个block上,当读取这种数据时就会发生远程读数据的行为。如果设置stripe的只保存在一个block上的话,如果当前block上的剩余空间不足以存储下一个strpie,ORC的writer接下来会将数据打散保存在block剩余的空间上,直到这个block存满为止。这样,下一个stripe又会从下一个block开始存储。

由于ORC中使用了更加精确的索引信息,使得在读取数据时可以指定从任意一行开始读取,更细粒度的统计信息使得读取ORC文件跳过整个row group,ORC默认会对任何一块数据和索引信息使用ZLIB压缩,因此ORC文件占用的存储空间也更小,这点在后面的测试对比中也有所印证。

^_^,如果楼主说的是“ORC什么意思”那就好说了,ORC是单词“ORCISH”的简称,在魔兽争霸中是兽族的代称!

如果楼主问ORC的主流战术意识,那么就要了解兽族的特点:机动性强,持续作战能力不强,驱散,穿刺单位较弱,机动性强。所以ORC的主流意识可以总结为“速战速决”“游击战”“暴力压制”等等

游戏数据同步,是在下载地图。失败了,就是说你因为各种问题,导致地图下载失败,一般是网络链接不稳定。

最好是想要玩什么地图,提前下载好,然后找到你想进的房间,不然等你下好图,别人已经开始游戏了呢!如果是你创建房间,就是你玩的地图是一张未识别的地图,需要上传给官方识别,在这个过程中,可能会识别不通过吧!

探究的一般过程是从发现问题、提出问题开始的,发现问题后,根据自己已有的知识和生活经验对问题的答案作出假设.设计探究的方案,包括选择材料、设计方法步骤等.按照探究方案进行探究,得到结果,再分析所得的结果与假设是否相符,从而得出结论.并不是所有的问题都一次探究得到正确的结论.有时,由于探究的方法不够完善,也可能得出错误的结论.因此,在得出结论后,还需要对整个探究过程进行反思.探究实验的一般方法步骤:提出问题、做出假设、制定计划、实施计划、得出结论、表达和交流.

科学探究常用的方法有观察法、实验法、调查法和资料分析法等.

观察是科学探究的一种基本方法.科学观察可以直接用肉眼,也可以借助放大镜、显微镜等仪器,或利用照相机、录像机、摄像机等工具,有时还需要测量.科学的观察要有明确的目的;观察时要全面、细致、实事求是,并及时记录下来;要有计划、要耐心;要积极思考,及时记录;要交流看法、进行讨论.实验方案的设计要紧紧围绕提出的问题和假设来进行.在研究一种条件对研究对象的影响时,所进行的除了这种条件不同外,其它条件都相同的实验,叫做对照实验.一般步骤:发现并提出问题;收集与问题相关的信息;作出假设;设计实验方案;实施实验并记录;分析实验现象;得出结论.调查是科学探究的常用方法之一.调查时首先要明确调查目的和调查对象,制订合理的调查方案.调查过程中有时因为调查的范围很大,就要选取一部分调查对象作为样本.调查过程中要如实记录.对调查的结果要进行整理和分析,有时要用数学方法进行统计.收集和分析资料也是科学探究的常用方法之一.收集资料的途径有多种.去图书管查阅书刊报纸,拜访有关人士,上网收索.其中资料的形式包括文字、、数据以及音像资料等.对获得的资料要进行整理和分析,从中寻找答案和探究线索.

魔兽秘籍是指在暴雪公司开发魔兽争霸的游戏中在单人模式下使用的一种做弊代码。

Greedisgood = 黄金木材各加500单位

(如果在Greedisgood后面空一格再打上你想要多少黄金木材的数字如1000000 就会加到这样,但太贪心100000000000就会变成黄金木材为0)

KeyserSoze = 加黄金

LeafItToMe = 加木材

PointBreak = 加人口上限

(实际上不是加人口上限,而是取消当前人口上限,比如说某RPG地图,人口限制为40,使用该秘籍后你可以建造超过40人口的单位——by 举杯邀月影)

Whosyourdaddy = 无敌且伤害为100倍

(许多人认为是一击必杀,其实只是伤害翻倍了,用农民去打3本就可以看出来这个伤害其实不是一击必杀)(其实也不是真的无敌,只是物理与魔法攻击无效,溅射有效,理论上还是会死——by 举杯邀月影)

Iseedeadpeople = 显示全部地图

Allyourbasearebelongtous = 立即获胜

Somebodysetupusthebomb = 立即战败

ItVexesMe = 不会被判定获胜

StrengthAndHonor = 不会被判定战败

Thereisnospoon = 法力无限

WhoIsJohnGalt = 研发加速

warpten = 快速建造

SharpAndShiny = 全部升级

Synergy = 科技全开

RiseAndShine = 黎明

LightsOut = 黄昏

DaylightSavings = 调整时间

Motherland = 跳关 (如 human 04)

LocainePowder = fastdeath

TheDudeAbides = cooldown

Iseedeadpeople = 打开地图

Thereisnospoon = 无限力量(Magic)

Strengthandhonor = 无敌环境

Itvexesme = 不能胜利的模式

Greedisgood = +500的金子和木头

Greedisgood # = +#金子和木头(#任填)(#≤1000000)

Keysersoze = +500的金子

Keysersoze # = + # 金子(#≤1000000)

Leafittome = +500 木头

Leafittome # = + # 木头(#≤1000000)

Pointbreak = 清除食物限制

Warpten = 生产(科技研究)速度变快

Iocainepowder = 快速死亡

Whoisjohngalt = 加快研究

Sharpandshiny = 研究升级

Synergy = 无需技术的支持

Riseandshine = 设定开始时间

Lightsout = 设定结束时间

Daylightsavings = 设定白天的时间

Motherland = 选择等级

Thedudeabides = 平静(也就是上面的技能无cool-down)

Motherland = 选择等级

Fast death(): iocainepowder

Cool down时间为0。即放完一个魔法立刻可以放第二次。。 thedudeabides

让时间永远停留在白昼: daylightsavings

首字母可大写也可不大写

I = i

词首字母“I”为[ai]音

不是L玩家注意

禁止任务默认的胜利条件: itvexesme

以上就是关于parquet和orc全部的内容,包括:parquet和orc、魔兽争霸RPG,ORC什么意识、魔兽争霸3官方对战平台创建房间提示游戏数据同步,之后好久没动静然后提示游戏数据同步失败是怎么回事等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9704512.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-01
下一篇2023-05-01

发表评论

登录后才能评论

评论列表(0条)

    保存