当前位置: 首页 > wzjs >正文

网站建设情况介绍前端代码做招新网站

网站建设情况介绍,前端代码做招新网站,wordpress用户注册地址,建设网站需要的软硬件笔者从事Spark组件的开发,工作涉及到Parquet文件相关的知识,本文简要介绍一下Parquet编码相关的知识。 Parquet数据类型 在介绍Parquet编码之前我们需要先了解一下Parquet类型与Spark类型之间的关系,因为在Parquet的实现当中,选…

笔者从事Spark组件的开发,工作涉及到Parquet文件相关的知识,本文简要介绍一下Parquet编码相关的知识。

Parquet数据类型

在介绍Parquet编码之前我们需要先了解一下Parquet类型与Spark类型之间的关系,因为在Parquet的实现当中,选择何种编码是根据列对应的类型来决定的。具体的对应关系如下:

关于Spark读写的时候如何转换到对应的Parquet类型,可以参考Spark代码中的ParquetToSparkSchemaConverterSparkToParquetSchemaConverter。

Parquet ValuesWriter

Parquet的写入有两种实现,通过parquet.writer.version指定可选的值有v1, v2默认是v1writer version会选择对应的ValuesWriterFactory,ValuesWriterFactory会负责为不同的类型选择不同的ValuesWriter。

ValuesWriterFactory都会实现newValuesWriter方法:

ValuesWriter是负责在写入过程中的实现类,针对每一种类型,Parquet都有对应的ValuesWriter实现,所有的编码实现都在ValuesWriter的子类当中,如下:

其中FallbackValuesWriter的实现比较特殊,它没有实现具体的编码,而是定义了2个ValuesWriter对象,达到fallback的效果,这里主要是被用于字典编码写入不符合预期的时候进行fallback。

一般initialWriter是DictionaryValuesWriter,fallbackWriter是PlainValuesWriter,currentWriter是一个指针的角色,根据是否fallback指向initialWriter或者fallbackWriter。这顺便提一下什么时候会发生fallback,主要有两种情况,一是使用DictionaryValuesWriter写第一个Page的时候,如果(encodedSize + dictionaryByteSize) < rawSize,则执行fallback。二是当写入具体的value到Page后会进行sizeCheck,检查到Dictionary的Size大于1MB或者Dictionary元素个数大于Integer.MAX_VALUE - 1也会进行fallback。

笔者整理了V1和V2具体的ValuesWriter,V2主要是增加了Delta 编码相关的ValuesWriter,具体区别在下面图片黄色的部分:

Parquet编码(Encoding)

Parquet的编码是为了重新调整数据的分布,从而让数据存储更加高效,实现了的编码如下:

这一部分为了方便理解需要结合图片和文字讲解,比较难一两句话讲清楚,需要结合原理和看具体的代码理解,所以这里先偷个懒,直接贴一下整理过的PPT,后面有时间了再针对每种编码进行详细的介绍:

PLAIN

PLAIN编码就是明文存储,具体的实现是Little-endian:

BIT_PACKED

bit_packed只支持Integer和boolean类型,因为其实现的原因,排序对这种编码的影响不大:

Run Length Encoding / Bit-Packing Hybrid

这个是RLE和bit-packing的混合编码,结合了两种的优点,在V2当中是Boolean类型的默认编码,同时还被用于Dictionary indices和definition / repetition level的写入。下面简单介绍了什么时候用RLE,什么时候用bit- packing,这里就不重复描述了:

下面的代码是何时使用RLE或者bit-packing的条件判断:

PLAIN_DICTIONARY / RLE_DICTIONARY

这块是字典编码,字典的文本是PLAIN编码明文存储的,字典index是RLE混合编码的实现:

Delta Encoding

下面是增量编码(delta encoding的部分),Parquet实现了三种delta编码,分别是DELTA_BINARY_PACKED,DELTA_LENGTH_BYTE_ARRAY, DELTA_BYTE_ARRAY,实现的ValuesWriter之间存在继承和调用的关系,关系图见下图:

DELTA_BINARY_PACKED

DELTA_LENGTH_BYTE_ARRAY

DELTA_BYTE_ARRAY

BYTE_STREAM_SPLIT

BYTE_STREAM_SPLIT准确的来说其实不是一种编码,它不能对调整数据的分布,只是在写入的过程做了加速的效果。


文章转载自:

http://rHdGJFBL.rtmqy.cn
http://Ar9T3LKu.rtmqy.cn
http://K18Tcjck.rtmqy.cn
http://nayu5h3f.rtmqy.cn
http://rBJUsL6b.rtmqy.cn
http://BakqnSqn.rtmqy.cn
http://S2grlYPc.rtmqy.cn
http://s4ZQNYBY.rtmqy.cn
http://fJNvbTHn.rtmqy.cn
http://mXABmm73.rtmqy.cn
http://1RACJEiZ.rtmqy.cn
http://EumaMdk3.rtmqy.cn
http://e5YgJYch.rtmqy.cn
http://hJARXOEY.rtmqy.cn
http://K4kQWECq.rtmqy.cn
http://mxvxATxQ.rtmqy.cn
http://JdqmSbtc.rtmqy.cn
http://thMWdou1.rtmqy.cn
http://r9bwCuAL.rtmqy.cn
http://12SAZAHf.rtmqy.cn
http://MTmnCW48.rtmqy.cn
http://rAfWrHQq.rtmqy.cn
http://FkdB18We.rtmqy.cn
http://S1PC21YE.rtmqy.cn
http://3mEXkfvt.rtmqy.cn
http://XY5YxGxN.rtmqy.cn
http://kAeG2KEw.rtmqy.cn
http://70t4vUqw.rtmqy.cn
http://zHwmX2CM.rtmqy.cn
http://7x9XgQfQ.rtmqy.cn
http://www.dtcms.com/wzjs/626764.html

相关文章:

  • 广州的房地产网站建设竞价移动网站
  • 张家口城乡建设局网站茌平县建设局网站
  • 自主建站建设网站的法律可行性
  • 网站建设华科技公司汉服设计制作培训
  • 网站开发要加班吗大岭山镇网站建设公司
  • 做电影网站选择什么配置的服务器网站页尾的作用
  • 排名前50名免费的网站免费软件是怎么盈利的
  • 句容网站建设公司大连效果图制作公司
  • 郑州企业网站设计网站文章关键字密度
  • 网站更换域名 seo长沙网络营销公司哪家好
  • 网站建设教程 作业清爽网站模板
  • app 移动网站建设wordpress版权加密
  • 建站之星网站 和服务器南宁排名seo公司
  • 给装修公司做推广的网站o2o 电商网站 微商城 ppt
  • 怎样网站制作设计建设茶叶网站的目的
  • 网站开发保密协议范本下载网站建设怎么做呢
  • 网站标签设置网站做权重有用吗
  • 贵州网站备案查询平凉市建设局网站
  • 用了wordpress的电商网站开发者官网
  • 重庆网站关键词推广小程序企业网站开发
  • 网站模板但没有后台如何做网站wordpress文章批量编辑
  • 百度蜘蛛抓取网站模块wordpress在线视频
  • 南阳网站推广方案十九冶成都建设网站
  • 张店网站建宁波seo推荐
  • 如何用ps做网站平面图如何推广网站最有效
  • 番禺网站建设知乎在线制作gif表情包
  • 一般商业app要多少钱东莞seo关键字优化
  • 动漫网站做毕业设计简单吗梧州房源信息网
  • 汕头网站建设哪里找无货源网店怎么找商家合作
  • 手机网站技巧云主机租用