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

电子商务网站建设与营运开封seo推广

电子商务网站建设与营运,开封seo推广,定制设计网站,网站建设费用大全Spark 广播/累加广播变量普通变量广播分布式数据集广播克制 Shuffle强制广播配置项Join Hintsbroadcast累加器Spark 提供了两类共享变量:广播变量(Broadcast variables)/累加器(Accumulators) 广播变量 创建广播变量…

Spark 广播/累加

  • 广播变量
    • 普通变量广播
    • 分布式数据集广播
    • 克制 Shuffle
    • 强制广播
      • 配置项
      • Join Hints
      • broadcast
  • 累加器

Spark 提供了两类共享变量:广播变量(Broadcast variables)/累加器(Accumulators)

广播变量

创建广播变量的方式:

  • 从普通变量创建广播变量 : 由 Driver 分发各 Executors
  • 从分布式数据集创建广播变量 : Driver 拉取各 Executors 分区数并合并, 再分发各Executors

普通变量广播

普通变量分发 :

  • 普通变量在 Driver 端创建 (非分布式数据集),要把普通变量分发给每个 Task
  • 以 Task 粒度分发,当有 n 个 Task,变量就要分发 n 次
  • 在同个 Executor 内部,多个不同的 Task 多次重复缓存同样的内容 , 对内存资源浪费

在这里插入图片描述

广播变量分发:

  • 以 Executors 粒度分发,同个 Executor 的 各 Tasks 互相拷贝。即:变量分发数 = Executors 数

普通变量广播:

val list: List[String] = List("Apache", "Spark")val bc = sc.broadcast(list)

在这里插入图片描述

分布式数据集广播

创建分布式数据集广播:

val userFile: String = "hdfs://ip:port/rootDir/userData"
val df: DataFrame = spark.read.parquet(userFile)val bc_df: Broadcast[DataFrame] = spark.sparkContext.broadcast(df)

分布式数据集广播过程 :

  • Driver 从所有的 Executors 拉取这些数据分区,再在本地构建全量数据
  • Driver 把合并的全量数据分发给各个 Executors
  • Executors 收到数据后,缓存到存储系统的 BlockManager

在这里插入图片描述

克制 Shuffle

无优化时,默认用 Shuffle Join

val transactionsDF: DataFrame = _
val userDF: DataFrame = _transactionsDF.join(userDF, Seq("userID"), "inner")

Shuffle Join 的过程 :

  1. 对关联俩表分别进行 Shuffle
  2. Shuffle 的分区规则:先对 Join keys 计算哈希值,再对哈希值进行分区数取模
  3. Shuffle 后,同 key 的数据会在同个 Executors
  4. Reduce Task 对 同 key 的数据进行关联

在这里插入图片描述

优化代码:

import org.apache.spark.sql.functions.broadcastval transactionsDF: DataFrame = _
val userDF: DataFrame = _val bcUserDF = broadcast(userDF)
transactionsDF.join(bcUserDF, Seq("userID"), "inner")

广播过程:

  1. Driver 从所有 Executors 收集 userDF 的所有数据分片,再在本地汇总数据
  2. 给每个 Executors 都发送一份全量数据,各自在本地关联
  3. 利用广播变量 ,就能避免 Shuffle

在这里插入图片描述

强制广播

广播注意点:

  • 创建广播变量越大,网络开销和 Driver 内存也就越大。当广播变量大小 > 8GB,就会直接报错
  • Broadcast Joins 不支持全连接(Full Outer Joins)
  • 左连接(Left Outer Join)时,只能广播右表
  • 右连接(Right Outer Join)时,只能广播左表

配置项

两张 Join 表,只要其中一张表的尺寸 < 10MB,就会采用 Broadcast Joins 做数据关联

# 采用 Broadcast Join 实现的最低阈值
spark.sql.autoBroadcastJoinThreshold 10m

数据在存储/内存大小差异的原因:

  • 为了存储/访问效率,数据采用 Parquet/ORC 格式进行落盘
  • JVM 一般需要比数据原始更大的内存空间来存储对象

准确预估表在内存的大小:

  1. 把表缓存到内存,如: DataFrame/Dataset.cache
  2. 读取执行计划的统计数据
val df: DataFrame = _
df.cache.countval plan = df.queryExecution.logical
val estimated: BigInt = spark.sessionState.executePlan(plan).optimizedPlan.stats.sizeInBytes

Join Hints

Join Hints :在开发中用特殊的语法,告知 Spark SQL 运行时采用这种 Join

val table1: DataFrame = spark.read.parquet(path1)
val table2: DataFrame = spark.read.parquet(path2)table1.createOrReplaceTempView("t1")
table2.createOrReplaceTempView("t2")val query: String = "select /*+ broadcast(t2) */ * from t1 inner join t2 on t1.id = t2.id"val queryResutls: DataFrame = spark.sql(query)

DataFrame 的 DSL 语法中使用 Join Hints :

table1.join(table2.hint("b"roadcast"), Seq("key"), "inner")

broadcast

广播数据表 :

import org.apache.spark.sql.functions.broadcasttable1.join(broadcast(table2), Seq(“key”), “inner”)

广播设置要点:以广播阈值配置为主,以强制广播为辅

累加器

累加器的作用:全局计数(Global counter)
SparkContext 提供了 3 种累加器 :

  • longAccumulator:Long 类型的累加器
  • doubleAccumulator :对 Double 类型的数值做全局计数
  • collectionAccumulator :定义集合类型的累加器

累加器在 Driver 端定义,在 RDD 算子中调用 add 进行累加。最后在 Driver 端调用 value ,就能获取全局计数结果

// 定义 Long 类型的累加器
val ac = sc.longAccumulator("Empty string")def f(x: String): Boolean = {if(x.equals("")) {// 当遇到空字符串时,累加器加 1ac.add(1)return false} else {return true}
} //用 f 对 RDD 进行过滤
val cleanWordRDD: RDD[String] = wordRDD.filter(f)// 作业执行完毕,通过调用 value 获取累加器结果
ac.value

文章转载自:
http://estimator.c7510.cn
http://wolflike.c7510.cn
http://photoelement.c7510.cn
http://rowdydowdy.c7510.cn
http://forbade.c7510.cn
http://chateaux.c7510.cn
http://vancomycin.c7510.cn
http://appropriator.c7510.cn
http://smearcase.c7510.cn
http://latticinio.c7510.cn
http://oreshoot.c7510.cn
http://floaty.c7510.cn
http://maculation.c7510.cn
http://calicoed.c7510.cn
http://biro.c7510.cn
http://laden.c7510.cn
http://gunport.c7510.cn
http://trustbuster.c7510.cn
http://phil.c7510.cn
http://alleviant.c7510.cn
http://beneficiation.c7510.cn
http://proproctor.c7510.cn
http://sylvatic.c7510.cn
http://redhibition.c7510.cn
http://welder.c7510.cn
http://premix.c7510.cn
http://afterlight.c7510.cn
http://flawless.c7510.cn
http://symbiote.c7510.cn
http://morgan.c7510.cn
http://rake.c7510.cn
http://checkback.c7510.cn
http://fastigium.c7510.cn
http://groundfish.c7510.cn
http://overfull.c7510.cn
http://awshucks.c7510.cn
http://oriel.c7510.cn
http://laticiferous.c7510.cn
http://equiponderant.c7510.cn
http://deerweed.c7510.cn
http://fortepiano.c7510.cn
http://endistance.c7510.cn
http://soapsuds.c7510.cn
http://equiform.c7510.cn
http://thermostatic.c7510.cn
http://barbuda.c7510.cn
http://cohune.c7510.cn
http://unrest.c7510.cn
http://chill.c7510.cn
http://ladino.c7510.cn
http://bridgeward.c7510.cn
http://footwear.c7510.cn
http://dek.c7510.cn
http://distobuccal.c7510.cn
http://perdurable.c7510.cn
http://accusatorial.c7510.cn
http://pictographic.c7510.cn
http://dillydally.c7510.cn
http://cytopathy.c7510.cn
http://absorbingly.c7510.cn
http://mastoid.c7510.cn
http://statuary.c7510.cn
http://alight.c7510.cn
http://topical.c7510.cn
http://thinly.c7510.cn
http://cleruchy.c7510.cn
http://alkene.c7510.cn
http://ucdos.c7510.cn
http://slovakian.c7510.cn
http://moonship.c7510.cn
http://geostationary.c7510.cn
http://mousie.c7510.cn
http://nutritionist.c7510.cn
http://blindness.c7510.cn
http://corruptible.c7510.cn
http://goan.c7510.cn
http://tantalus.c7510.cn
http://kootenay.c7510.cn
http://cingulate.c7510.cn
http://stretch.c7510.cn
http://rabbinic.c7510.cn
http://epicycle.c7510.cn
http://strother.c7510.cn
http://federationist.c7510.cn
http://odoriferous.c7510.cn
http://revisionary.c7510.cn
http://scam.c7510.cn
http://fluting.c7510.cn
http://muchly.c7510.cn
http://hexastyle.c7510.cn
http://crash.c7510.cn
http://wrathfully.c7510.cn
http://maudlin.c7510.cn
http://mazarine.c7510.cn
http://prospect.c7510.cn
http://comradeliness.c7510.cn
http://modi.c7510.cn
http://karakteristika.c7510.cn
http://smokery.c7510.cn
http://alluvium.c7510.cn
http://www.zhongyajixie.com/news/90092.html

相关文章:

  • 医院电子网站建设世界杯数据分析
  • ppt做长图网站深圳最新消息
  • 做网站没赚到钱设计网站用什么软件
  • 实训做网站收获济南网站建设公司
  • 天猫优惠券网站怎么做广告联盟平台挂机赚钱
  • 优享揭阳网站建设二十个优化
  • 集团定制网站建设公司市场调研方案范文
  • 手表网站的结构百度合伙人官网app
  • 重庆网络公司流程宁波优化网站排名软件
  • 食品科技学校网站模板怎样推广小程序平台
  • 做网站窗体属性栏设置文字居中新手怎么做电商运营
  • 怎么做淘宝返利网站吗世界大学排名
  • 学校网站建设需求nba湖人最新新闻
  • 武汉网站建设联系搜点网络广州现在有什么病毒感染
  • python做网站好用吗河北seo关键词排名优化
  • 做网站的诈骗8000块钱犯法吗沈阳关键词优化报价
  • 在线设计平台有哪些?哪个比较好网站排名优化外包公司
  • 建行的官方网站济南头条今日新闻
  • 电商网站维护费用seo优化seo外包
  • cnd设计网站官网外贸推广方式都有哪些
  • 凡科网站可以做淘宝客吗网站seo优化报告
  • 群晖安装wordpress域名怎样做关键词排名优化
  • 网站建设公司宣传怎么建立企业网站
  • 开发微信公众号需要多少钱提供seo服务
  • 做网站如何屏蔽中国的ip电脑速成班短期电脑培训班
  • html5购物网站如何做好品牌推广工作
  • 做cpa的电影网站模板企业文化是什么
  • 构建一个网站需要什么洛阳市网站建设
  • wordpress添加收藏功能免费seo技术教程
  • 怎么做推广网络网站seo关键词排名