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

一个主机可以建设多少个网站/站长工具seo推广 站长工具查询

一个主机可以建设多少个网站,站长工具seo推广 站长工具查询,建e室内设计网全景效果图,chn域名网站为什么80%的码农都做不了架构师?>>> 在使用 Spark SQL 的过程中,经常会用到 groupBy 这个函数进行一些统计工作。但是会发现除了 groupBy 外,还有一个 groupByKey(**注意RDD 也有一个 groupByKey,而这里的…

为什么80%的码农都做不了架构师?>>>   hot3.png

在使用 Spark SQL 的过程中,经常会用到 groupBy 这个函数进行一些统计工作。但是会发现除了 groupBy 外,还有一个 groupByKey(**注意RDD 也有一个 groupByKey,而这里的 groupByKey 是 DataFrame 的 **) 。这个 groupByKey 引起了我的好奇,那我们就到源码里面一探究竟吧。

所用 spark 版本:spark 2.1.0

先从使用的角度来说, **groupBy:**groupBy类似于传统SQL语言中的group by子语句,但比较不同的是groupBy()可以带多个列名,对多个列进行group。比如想根据 "id" 和 "name" 进行 groupBy 的话可以

df.goupBy("id","name")

groupBy返回的类型是RelationalGroupedDataset。

**groupByKey:**groupByKey则更加灵活,可以根据用户自己对列的组合来进行groupBy,比如上面的那个例子,根据 "id" 和 "name" 进行 groupBy,使用groupByKey可以这样。

//同前面的goupBy效果是一样的,但返回的类型是不一样的
df..toDF("id","name").goupByKey(row =>{row.getString(0) + row.getString(1)
})

但和groupBy不同的是groupByKey返回的类型是KeyValueGroupedDataset。

下面来看看这两个方法的实现有何区别。

groupBy
  def groupBy(cols: Column*): RelationalGroupedDataset = {RelationalGroupedDataset(toDF(), cols.map(_.expr), RelationalGroupedDataset.GroupByType)}

最终会去新建一个RelationalGroupedDataset,而这个方法提供count(),max(),agg(),等方法。值得一提的是,这个类在spark1.x的时候类名为“GroupedData”。看看类中的注释吧

/*** A set of methods for aggregations on a `DataFrame`, created by `Dataset.groupBy`.** The main method is the agg function, which has multiple variants. This class also contains* convenience some first order statistics such as mean, sum for convenience.** This class was named `GroupedData` in Spark 1.x.** @since 2.0.0*/
@InterfaceStability.Stable
class RelationalGroupedDataset protected[sql](
groupByKey
  @Experimental@InterfaceStability.Evolvingdef groupByKey[K: Encoder](func: T => K): KeyValueGroupedDataset[K, T] = {val inputPlan = logicalPlanval withGroupingKey = AppendColumns(func, inputPlan)val executed = sparkSession.sessionState.executePlan(withGroupingKey)new KeyValueGroupedDataset(encoderFor[K],encoderFor[T],executed,inputPlan.output,withGroupingKey.newColumns)}

可以发现最后生成和返回的类是KeyValueGroupedDataset。这是dataset的子类,表示聚合过之后的dataset。 我们再看看这个类中的注释吧

/*** :: Experimental ::* A [[Dataset]] has been logically grouped by a user specified grouping key.  Users should not* construct a [[KeyValueGroupedDataset]] directly, but should instead call `groupByKey` on* an existing [[Dataset]].** @since 2.0.0*/
@Experimental
@InterfaceStability.Evolving
class KeyValueGroupedDataset[K, V] private[sql](

可以发现 groupByKey 还处于实验阶段。它是希望可以由用户自己来实现 groupBy 的规则,而不像 groupBy() 一样,需要被列属性所束缚。 通过 groupByKey 用户可以按照自己的需求来进行 grouping 。

总而言之,groupByKey虽然提供了更加灵活的处理 grouping 的方式,但 groupByKey 后返回的类是 KeyValueGroupedDataset ,它里面所提供的操作接口也不如 groupBy 返回的 RelationalGroupedDataset 所提供的接口丰富。除非真的有一些特殊的 grouping 操作,否则还是使用 groupBy 吧。

转载于:https://my.oschina.net/shezm/blog/2878919

http://www.lbrq.cn/news/1414279.html

相关文章:

  • 青岛网站改版/谷歌seo排名优化
  • 郑州网站设计收费低/网站百度收录
  • 多个网站一个域名/百度关键词搜索指数查询
  • 菠菜彩票网站怎么建设/二级域名查询网站
  • 美食网站开发的目标/个人对网络营销的看法
  • 网站开发的硬件环境/爱站
  • 网站死链接怎么提交/百度官网推广
  • 免费网站建设seo/seo营销软件
  • 做网站端口映射/整合营销策略有哪些
  • 成都有哪些网站建设的公司/如何在百度做免费推广产品
  • 做快递网站制作/宁德市古田县
  • 邢台市网站制作 网站建设/广告网站建设网站排名优化
  • 群晖wordpress 站点/北京官网seo
  • 我想做一个网站/百度推广费用一天多少钱
  • 哪家网站设计好/谷歌浏览器下载安装2022最新版
  • 网站建设的网络公/新品上市的营销方案
  • 学校网站建设材料/南京网站seo
  • 东莞做网站哪家公司好/宁德seo培训
  • 个人备案做门户网站/网络营销课程报告
  • 新西兰做网站代购/软文营销范文100字
  • 网站服务器 要求/卖链接的网站
  • 网站建设选哪个好/唐山seo快速排名
  • 做网站销售怎么开发客户/app拉新推广平台
  • 大岭山网站仿做/站长工具之家
  • 怎么利用国外网站做互联网挣钱/推广搜索怎么选关键词
  • 网站建设 标准/公众号怎么推广
  • 联系我们_网站制作公司/推广引流工具
  • 老男孩linux网站/seo网站推广方案策划书
  • 教学网站/seo优化报价公司
  • 做彩票网站需要什么技术/做一个公司网站需要多少钱
  • LeetCode 837.新 21 点:动态规划+滑动窗口
  • 中级统计师-会计学基础知识-第五章 财务报告
  • 基于51单片机汽车自动照明灯超声波光敏远近光灯设计
  • 海洋牧场助力可持续发展,保护海洋生态平衡
  • 云智智慧停充一体云-allnew全新体验-路内停车源码+路外停车源码+充电桩源码解决方案
  • 北京JAVA基础面试30天打卡11