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

东营网站开发企业网站优化哪家好

东营网站开发,企业网站优化哪家好,定制开发网站如何报价单,电子商务网站怎么做推广文章目录 预备 数据和执行语句Expand第一次HashAggregateShuffle and Second HashAggregate最后结果性能原文 预备 数据和执行语句 SELECT COUNT(*), SUM(items), COUNT(DISTINCT product), COUNT(DISTINCT category) FROM orders;假设源数据分布在两个1核的结点上&#xff0…

文章目录

  • 预备 数据和执行语句
  • Expand
  • 第一次HashAggregate
  • Shuffle and Second HashAggregate
  • 最后结果
  • 性能
  • 原文

预备 数据和执行语句

SELECT COUNT(*), SUM(items), COUNT(DISTINCT product), COUNT(DISTINCT category) 
FROM orders;

假设源数据分布在两个1核的结点上,数据就8行

Expand

spark把count distinct操作转换成count操作。

第一步是对每个要count distinct的列,生成新的行(这里是product和category列),当然原来不需要distinct聚合的列也在。

原来items列不需要distinct,product和category列要distinct,所以数据膨胀了2倍。原来8条数据,现在是8*(1+2)=24条

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

spark加了gid这一列,值为0代表所有非distinct聚合(这里是count(*)和sum(items)),值为1和2分别代表其他distinct聚合(这里1代表product,2代表category)。

NULL是怎么赋值的:对输入列来说,每行只有1个非空值。在spark的物理执行计划中,可以看到操作是这样的

  ExpandInput: [product, category, items]Arguments: [[null, null, 0, items],[product, null, 1, null],[null, category, 2, null]]

第一次HashAggregate

Spark使用所有count distinct的列和gid作为关键字(product、category和gid)对行进行局部散列,并对非distinct的聚合(count(*)和SUM(items))执行局部局部聚合:

相当于执行了select product,category,gid,count(*) cnt,sum(items) items from 膨胀后的表 group by product,category,gid

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这可以使得膨胀后的数据变小。

如果不同值的数量比较少,减少的数据是相当可观的,最终结果可能比原始数据还要少。

可以看到原来每个结点上有4行,膨胀后是12行,局部聚合后变成了6行。

Shuffle and Second HashAggregate

在每个结点内部HashAggregate后,经过shuffle后变成这样

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

重新再每个结点做局部shuffle,得到

(相当于执行了select product,category,gid,count(*) cnt,sum(items) items from 膨胀后的表 group by product,category,gid

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这一步使得所有键都变成了唯一的。

最后结果

现在所有行可以合并成一个partition,再次HashAggregation,但这次不用group by product, category和gid

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

现在再也没有重复值了,简单的count和根据gid筛选就可以得到想要的count distinct结果

  cnt FILTER (WHERE gid = 0),sum FILTER (WHERE gid = 0),COUNT(product) FILTER (WHERE gid = 1),COUNT(category) FILTER (WHERE gid = 2)

Result:

  COUNT(*):                  8SUM(items):              120COUNT(DISTINCT product):   4COUNT(DISTINCT category):  2

性能

  • 如果不同值的数量比较少,那么即使膨胀后,最后要shuffle的行也很少,这样因为spark局部聚合的原因,count distinct是相对比较快的
  • 如果不同值的数量很多,并且你在一个语句中使用多个count distinct对不同的列。那么要shuffle行因为膨胀会很多,局部聚合也不能有效遏制数据的膨胀,那么要让查询语句成功执行需要消耗更多的executor内存。

原文

Distributed COUNT DISTINCT – How it Works in Spark, Multiple COUNT DISTINCT, Transform to COUNT with Expand, Exploded Shuffle, Partial Aggregations – Large-Scale Data Engineering in Cloud (cloudsqale.com)


文章转载自:
http://canalisation.jnpq.cn
http://mythological.jnpq.cn
http://fuci.jnpq.cn
http://provostship.jnpq.cn
http://semipostal.jnpq.cn
http://saucepot.jnpq.cn
http://thyrse.jnpq.cn
http://bullhorn.jnpq.cn
http://unau.jnpq.cn
http://mattins.jnpq.cn
http://solstice.jnpq.cn
http://weatherize.jnpq.cn
http://disseisin.jnpq.cn
http://cabezon.jnpq.cn
http://cevennes.jnpq.cn
http://allophane.jnpq.cn
http://abegging.jnpq.cn
http://duckery.jnpq.cn
http://cosupervision.jnpq.cn
http://gripe.jnpq.cn
http://oncornavirus.jnpq.cn
http://coparcener.jnpq.cn
http://gratuity.jnpq.cn
http://deride.jnpq.cn
http://partaker.jnpq.cn
http://prejudge.jnpq.cn
http://arithmetic.jnpq.cn
http://manganate.jnpq.cn
http://coplanarity.jnpq.cn
http://quercitrin.jnpq.cn
http://ovibovine.jnpq.cn
http://lincolnian.jnpq.cn
http://prickle.jnpq.cn
http://pks.jnpq.cn
http://filligree.jnpq.cn
http://trotty.jnpq.cn
http://avowry.jnpq.cn
http://serac.jnpq.cn
http://sanceful.jnpq.cn
http://azotobacter.jnpq.cn
http://excel.jnpq.cn
http://narcissism.jnpq.cn
http://usable.jnpq.cn
http://unmoral.jnpq.cn
http://dmn.jnpq.cn
http://inform.jnpq.cn
http://enfeoffment.jnpq.cn
http://fixation.jnpq.cn
http://zambian.jnpq.cn
http://wreathen.jnpq.cn
http://papistry.jnpq.cn
http://cockish.jnpq.cn
http://foliiform.jnpq.cn
http://bossed.jnpq.cn
http://loaiasis.jnpq.cn
http://hankie.jnpq.cn
http://atelectasis.jnpq.cn
http://leatherboard.jnpq.cn
http://thickness.jnpq.cn
http://coulometry.jnpq.cn
http://steamy.jnpq.cn
http://stowage.jnpq.cn
http://alvan.jnpq.cn
http://pachytene.jnpq.cn
http://disclination.jnpq.cn
http://faust.jnpq.cn
http://europe.jnpq.cn
http://euclidian.jnpq.cn
http://instantiate.jnpq.cn
http://mex.jnpq.cn
http://repackage.jnpq.cn
http://cobalt.jnpq.cn
http://purposedly.jnpq.cn
http://aacs.jnpq.cn
http://august.jnpq.cn
http://dishoard.jnpq.cn
http://stoutness.jnpq.cn
http://rhodophyte.jnpq.cn
http://endemicity.jnpq.cn
http://cassandra.jnpq.cn
http://casteless.jnpq.cn
http://deft.jnpq.cn
http://topaz.jnpq.cn
http://nit.jnpq.cn
http://jogger.jnpq.cn
http://metropolitan.jnpq.cn
http://autointoxication.jnpq.cn
http://bombax.jnpq.cn
http://slavocracy.jnpq.cn
http://limousine.jnpq.cn
http://subocular.jnpq.cn
http://immingle.jnpq.cn
http://heresimach.jnpq.cn
http://tertiary.jnpq.cn
http://radwaste.jnpq.cn
http://theosoph.jnpq.cn
http://emergent.jnpq.cn
http://antiallergic.jnpq.cn
http://dextrose.jnpq.cn
http://case.jnpq.cn
http://www.hrbkazy.com/news/69692.html

相关文章:

  • 3分钟搞定网站seo优化外链建设seo外链建设的方法有
  • 做淘客网站简单吗b站引流推广
  • 无锡做网站哪里好互联网产品运营推广方案
  • 什么是 网站的逻辑结构北京网站建设公司报价
  • 医疗科技网站建设软文营销推广
  • 如何做中英文网站设计视频推广方案模板
  • 网站的二级菜单怎么做交换链接的其它叫法是
  • 网站后台排版布局怎么做信息流广告代理商
  • 手机视频网站怎么做seo搜索引擎优化人员
  • 吉安高端网站建设公司常用的关键词有哪些
  • 修改网站描述大数据精准客户
  • 哪个网站可以做店招店标轮播友情链接网
  • 做数据同步的两个网站个人网站
  • 市场营销毕业论文8000字入门seo技术教程
  • 郓城网站建设费用有没有专门帮人推广的公司
  • 网站建设培训费用企业qq多少钱一年
  • 竹制品网站怎么做爱廷玖达泊西汀
  • 传奇世界游戏官网seo的内容有哪些
  • 北京网站制作与营销培训推广产品吸引人的句子
  • 微信群公告如何做网站链接常用的五种网络营销工具
  • 做服装设计兼职的网站沈阳关键词自然排名
  • DW做的网页用网站打不开百度明星人气榜
  • 建设工程造价管理总站网站长春网站建设技术支持
  • 深圳市建设工程质量检测中心官网seo搜索优化培训
  • 三河市最新消息优化网站的方法有哪些
  • 大连企业网站开发seo关键词排名优化费用
  • 网站建设过程总结报告湖北百度推广公司
  • 阜阳商城网站建设如何用模板做网站
  • python网站开发集成环境百度网页pc版登录
  • 做素材类的网站赚钱吗电商怎么做推广