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

网站建设执行力小程序怎么引流推广

网站建设执行力,小程序怎么引流推广,做网站 附加信息,网站html有趣代码目录 1.说明 2.怎样设置默认切片数 2.1 RDD默认切片设置 2.2 SparkSQL默认切片设置 3. makeRDD 切片原理 4. textFile 切片原理 4.1 切片规则 4.2 怎样设置切片大小 4.3 测试代码 5.hadoopFile 切片原理 5.1 说明 5.2 切片规则 5.3 怎样设置切片大小 5.4 代码测试…

目录

1.说明

2.怎样设置默认切片数

2.1 RDD默认切片设置

2.2 SparkSQL默认切片设置

3. makeRDD 切片原理

4. textFile 切片原理

4.1 切片规则

4.2 怎样设置切片大小

4.3 测试代码

 5.hadoopFile 切片原理

5.1 说明

5.2 切片规则

5.3 怎样设置切片大小

5.4 代码测试

5.5 minPartitions 在 CombineTextInputFormat 中的作用?

5.6 重点关注


1.说明

在spark中为我们提供了用来读取数据的方法
    比如 makeRDD、parallelize、textFile、hadoopFile等方法
    
这些方法按照数据源可以分为两类 文件系统、Driver内存中的集合数据
当我们使用指定的方法读取数据后,会按照指定的切片个数对文件进行切片


2.怎样设置默认切片数

在我们在使用RDD的算子时,经常会遇到可以显式的指定切片个数,或者隐式的使用默认切片个数,下面会告诉我们,怎样设置默认切片个数

2.1 RDD默认切片设置

1.驱动程序中设置
val sparkconf: SparkConf = new SparkConf().setAppName("测试默认切片数").set("spark.default.parallelism","1000").setMaster("local[100]")2.spark-shell或spark-submit 设置
spark-shell \
--master yarn \
--name "spark-shell-tmp" \
--conf spark.default.parallelism=1000 \
--driver-memory 40G \
--executor-memory 40G \
--num-executors 40 \
--executor-cores 6 \3.不指定 spark.default.parallelism 参数时,将使用默认值local模式:local[100] :  100local      :  客户端机器核数集群模式(yarn):2 或者 核数总和

源码:

查看默认切片数: 

// 获取默认切片数
val parallelism = sc.defaultParallelism

2.2 SparkSQL默认切片设置

-- 设置默认切片数
set spark.sql.shuffle.partitions=1000;默认值:当不设置时,默认为200注意:spark.default.parallelism 只有在处理RDD时才会起作用,对SparkSQL的无效spark.sql.shuffle.partitions 则是对sparks SQL专用的设置

3. makeRDD 切片原理

可用通过 makeRDD算子 将Driver中序列集合中数据转换成RDD,在转换的过程中,会根据指定的切片个数集合索引对集合切片

切片规则:

        根据集合长度切片数将集合切分成若干子集合(和集合元素内容无关)

示例代码:

  test("makeRDD - 切片逻辑") {// 初始化 spark配置实例val sparkconf: SparkConf = new SparkConf().setMaster("local[4]").setAppName("")// 初始化 spark环境对象val sc: SparkContext = new SparkContext(sparkconf)val rdd: RDD[(String, String)] = sc.makeRDD(List(("张飞1", "张飞java scala spark"), ("张飞2", "张飞java scala spark"), ("刘备3", "刘备java spark"), ("刘备4", "刘备java scala spark"), ("刘备5", "刘备scala spark"), ("关羽6", "关羽java scala spark"), ("关羽7", "关羽java scala"), ("关羽8", "关羽java scala spark"), ("关羽9", "关羽java spark")))// 查看每个分区的内容rdd.mapPartitionsWithIndex((i, iter) => {println(s"分区编号$i :${iter.mkString(" ")}");iter}).collect()rdd.getNumPartitionssc.stop()}

结果:

源码阅读:

1. 通过SparkContext创建rdd
def parallelize[T: ClassTag](
seq: Seq[T],
numSlices: Int = defaultParallelism): RDD[T] = withScope {
assertNotStopped()
new ParallelCollectionRDD[T](this, seq, numSlices, Map[Int, Seq[String]]())
}2. ParallelCollectionRDD类中的 getPartitions方法
override def getPartitions: Array[Partition] = {val slices = ParallelCollectionRDD.slice(data, numSlices).toArrayslices.indices.map(i => new ParallelCollectionPartition(id, i, slices(i))).toArray
}3. ParallelCollectionRDD对象的slice方法(核心切片逻辑)def slice[T: ClassTag](seq: Seq[T], numSlices: Int): Seq[Seq[T]] = {// 对切片数做合法性校验if (numSlices < 1) {throw new IllegalArgumentException("Positive number of partitions required")}// TODO 通过 集合长度和切片数 获取每个切片的位置信息// 从这可以得出 对集合的切片只和 集合索引和切片数相关,和集合内容无关// 将 集合索引按照切片数 切分成若干元素def positions(length: Long, numSlices: Int): Iterator[(Int, Int)] = {(0 until numSlices).iterator.map { i =>val start = ((i * length) / numSlices).toIntval end = (((i + 1) * length) / numSlices).toInt(start, end)}}// 对集合类型做判断seq match {case r: Range =>positions(r.length, numSlices).zipWithIndex.map { case ((start, end), index) =>// If the range is inclusive, use inclusive range for the last sliceif (r.isInclusive && index == numSlices - 1) {new Range.Inclusive(r.start + start * r.step, r.end, r.step)} else {new Range.Inclusive(r.start + start * r.step, r.start + (end - 1) * r.step, r.step)}}.toSeq.asInstanceOf[Seq[Seq[T]]]case nr: NumericRange[T] =>// For ranges of Long, Double, BigInteger, etcval slices = new ArrayBuffer[Seq[T]](numSlices)var r = nrfor ((start, end) <- positions(nr.length, numSlices)) {val sliceSize = end - startslices += r.take(sliceSize).asInstanceOf[Seq[T]]r = r.drop(sliceSize)}slices.toSeqcase _ =>val array = seq.toArray // To prevent O(n^2) operations for List etcpositions(array.length, numSlices).map { case (start, end) =>array.slice(start, end).toSeq}.toSeq}
}

4. textFile 切片原理

textFile使用的MapReduce框架中TextInputFormat类完成对文件切片和读取切片中数据

4.1 切片规则

1.对job输入路径中的每个文件单独切片
2.判断每个文件是否支持切片
         true : 按照指定切片大小对文件切片
         false: 文件整体作为一个切片 

4.2 怎样设置切片大小

// 切片大小计算规则splitSize = Math.max(minSize, Math.min(goalSize, blockSize))// 参数说明1.minSizeset mapreduce.input.fileinputformat.split.minsize=256000000 或 set mapred.min.split.size=256000000默认值 minSize=1L2.goalSizegoalSize=所有文件大小总和/指定的切片个数3.blockSize本地目录32M|HDFS目录128M或256M(看hdfs文件块具体配置)// 需求 1.真实切片大小 < blockSizegoalSize=所有文件大小总和/指定的切片个数 < blockSize 即(创建rdd时调大切片个数)2.真实切片大小 > blockSizeset mapreduce.input.fileinputformat.split.minSize=大于blockSize值

4.3 测试代码

  test("textFile - 切片逻辑") {// 初始化 spark配置实例val sf: SparkConf = new SparkConf().setMaster("local[4]").setAppName("Test textFile")// 初始化 spark环境对象val sc: SparkContext = new SparkContext(sf)sc.hadoopConfiguration.setInt("mapred.min.split.size", 469000000)// sc.hadoopConfiguration.setInt("mapreduce.input.fileinputformat.split.minsize", 256000000)// 读取目录下的所有文件val rdd: RDD[String] = sc.textFile("src/main/resources/data/dir/dir3/LOL.map", 1000)// 打印分区个数println("切片个数:"+rdd.getNumPartitions)sc.stop()}

执行结果:


 5.hadoopFile 切片原理

5.1 说明

def hadoopFile[K, V](path: String,inputFormatClass: Class[_ <: InputFormat[K, V]],keyClass: Class[K],valueClass: Class[V],minPartitions: Int = defaultMinPartitions): RDD[(K, V)] = withScope {assertNotStopped()功能:读取HDFS文件或本地文件来创建RDD(使用MapReduce框架中InputFormat类)参数:path: 指定job的输入路径inputFormatClass: 对输入文件切片和读取的实现类keyClass: key的数据类型valueClass: value的数据类型minPartitions: 最小切片数

5.2 切片规则

根据指定的切片大小进行切片,允许将多个文件合并成换一个切片对象

5.3 怎样设置切片大小

指定切片大小(默认值Long.MaxValue)
set mapred.max.split.size=切片大小 或
set mapreduce.input.fileinputformat.split.maxsize=切片大小

5.4 代码测试

  test("spark中使用 CombineTextInputFormat") {// 初始化 spark配置实例val sf: SparkConf = new SparkConf().setMaster("local[4]").setAppName("")// 初始化 spark环境对象val sc: SparkContext = new SparkContext(sf)// 读取目录下的所有文件val input = "src/main/resources/data/dir/dir3"val combineRDD: RDD[(LongWritable, Text)] = sc.hadoopFile[LongWritable, Text, org.apache.hadoop.mapred.lib.CombineTextInputFormat](input, 10000)//    val combineRDD: RDD[(LongWritable, Text)] = sc.hadoopFile[LongWritable, Text//      , org.apache.hadoop.mapred.TextInputFormat](input, 10000)sc.hadoopConfiguration.setInt("mapred.max.split.size", 128000000)//sc.hadoopConfiguration.setInt("mapreduce.input.fileinputformat.split.maxsize", 128000000)println("切片个数:" + combineRDD.getNumPartitions)//combineRDD.map(_._2.toString).foreach(println(_))//combineRDD.collect()//combineRDD.hadsc.stop()}

执行结果:

5.5 minPartitions 在 CombineTextInputFormat 中的作用?

CombineTextInputFormat切片逻辑和 最小切片数(minPartitions)  无关

查看 org.apache.hadoop.mapred.lib.CombineTextInputFormat类 getSplits方法
TODO: numSplits指定的切片个数,并没有使用public InputSplit[] getSplits(JobConf job, int numSplits) throws IOException {List<org.apache.hadoop.mapreduce.InputSplit> newStyleSplits =super.getSplits(Job.getInstance(job));InputSplit[] ret = new InputSplit[newStyleSplits.size()];for(int pos = 0; pos < newStyleSplits.size(); ++pos) {org.apache.hadoop.mapreduce.lib.input.CombineFileSplit newStyleSplit = (org.apache.hadoop.mapreduce.lib.input.CombineFileSplit) newStyleSplits.get(pos);ret[pos] = new CombineFileSplit(job, newStyleSplit.getPaths(),newStyleSplit.getStartOffsets(), newStyleSplit.getLengths(),newStyleSplit.getLocations());}return ret;}

5.6 重点关注

对计算任务而言,合并小文件是一把双刃剑,合并小文件后 就舍弃了数据本地化,则加了网络IO的开销,需要根据实际情况合理的选择 切片策略

CombineTextInputFormat源码参考:​​​​​​​https://blog.csdn.net/wawmg/article/details/17095125


文章转载自:
http://dinncocamera.tqpr.cn
http://dinncotrachea.tqpr.cn
http://dinncopunctuative.tqpr.cn
http://dinncoceliac.tqpr.cn
http://dinncomagnific.tqpr.cn
http://dinncoantithrombotic.tqpr.cn
http://dinncounaptly.tqpr.cn
http://dinncoperishable.tqpr.cn
http://dinncowhit.tqpr.cn
http://dinncozoography.tqpr.cn
http://dinncostrad.tqpr.cn
http://dinncoserow.tqpr.cn
http://dinncokilojoule.tqpr.cn
http://dinncofloorboarded.tqpr.cn
http://dinncoimmigration.tqpr.cn
http://dinncoformicary.tqpr.cn
http://dinncofruiterer.tqpr.cn
http://dinncopeckerhead.tqpr.cn
http://dinncoachromobacter.tqpr.cn
http://dinncogoyische.tqpr.cn
http://dinncoinviable.tqpr.cn
http://dinncoanthroposcopy.tqpr.cn
http://dinncobackscratching.tqpr.cn
http://dinncolangouste.tqpr.cn
http://dinncoundersign.tqpr.cn
http://dinncounderdrawers.tqpr.cn
http://dinncoheth.tqpr.cn
http://dinncoxylose.tqpr.cn
http://dinncoparamecin.tqpr.cn
http://dinncosemitropical.tqpr.cn
http://dinncosiderophilin.tqpr.cn
http://dinncomethylthionine.tqpr.cn
http://dinncoangostura.tqpr.cn
http://dinncosignorine.tqpr.cn
http://dinncohydroairplane.tqpr.cn
http://dinncolaevulose.tqpr.cn
http://dinncolymphoblastic.tqpr.cn
http://dinncointemerate.tqpr.cn
http://dinncowftu.tqpr.cn
http://dinncopanchromatize.tqpr.cn
http://dinncoendpaper.tqpr.cn
http://dinncoafghanistani.tqpr.cn
http://dinnconerd.tqpr.cn
http://dinncodetail.tqpr.cn
http://dinncourial.tqpr.cn
http://dinncoparroquet.tqpr.cn
http://dinncovenice.tqpr.cn
http://dinncothreescore.tqpr.cn
http://dinncosaphena.tqpr.cn
http://dinncosep.tqpr.cn
http://dinncoacaulescent.tqpr.cn
http://dinncoreceivership.tqpr.cn
http://dinncoscrawny.tqpr.cn
http://dinncostainability.tqpr.cn
http://dinncogreenroom.tqpr.cn
http://dinncocanula.tqpr.cn
http://dinncomicrocephaly.tqpr.cn
http://dinncopamplegia.tqpr.cn
http://dinncocolubrine.tqpr.cn
http://dinncohorehound.tqpr.cn
http://dinncoclonidine.tqpr.cn
http://dinncoanaplasia.tqpr.cn
http://dinncoravishing.tqpr.cn
http://dinncoeasternmost.tqpr.cn
http://dinncohierograph.tqpr.cn
http://dinncorepone.tqpr.cn
http://dinncocockeyed.tqpr.cn
http://dinncopilonidal.tqpr.cn
http://dinncoinscape.tqpr.cn
http://dinncoglutinosity.tqpr.cn
http://dinncocarryon.tqpr.cn
http://dinncocarpophore.tqpr.cn
http://dinncohogged.tqpr.cn
http://dinncodooly.tqpr.cn
http://dinncoskiascopy.tqpr.cn
http://dinncobiloculate.tqpr.cn
http://dinncoophite.tqpr.cn
http://dinncolayering.tqpr.cn
http://dinncojunk.tqpr.cn
http://dinncospiritualise.tqpr.cn
http://dinncoicosahedron.tqpr.cn
http://dinncoprodigiouss.tqpr.cn
http://dinncorebind.tqpr.cn
http://dinncoleisureliness.tqpr.cn
http://dinncoinherence.tqpr.cn
http://dinncocoenacle.tqpr.cn
http://dinncoaloysius.tqpr.cn
http://dinncounaneled.tqpr.cn
http://dinncochromoplasm.tqpr.cn
http://dinncojailhouse.tqpr.cn
http://dinncohusbandage.tqpr.cn
http://dinncodrawdown.tqpr.cn
http://dinncobev.tqpr.cn
http://dinncoferule.tqpr.cn
http://dinncoirreal.tqpr.cn
http://dinncoergastic.tqpr.cn
http://dinncoorgiastic.tqpr.cn
http://dinncointimist.tqpr.cn
http://dinncoidiograph.tqpr.cn
http://dinncoresurrect.tqpr.cn
http://www.dinnco.com/news/97671.html

相关文章:

  • 成都万商云集做网站怎么样短视频seo询盘系统
  • 免费营销软件网站建设网络优化工程师简历
  • 网站可以做章子吗拼多多代运营公司十大排名
  • 网站建设公司价位百度账号登陆入口
  • 网站建设的课件商家联盟营销方案
  • seo网站营销推广全...推客平台
  • 点网站建设百度指数免费查询
  • 网站制作后还能更改么谷歌seo排名优化服务
  • 网站做优化win10最强性能优化设置
  • 企业网站开发的功能网络品牌推广
  • 网站设计制作售价多少钱百度竞价排名价格
  • 网站前后端分离怎么做seo快速排名代理
  • wordpress搬迁后台总跳转到老网站如何在百度发广告推广
  • 网站做业务赚钱吗全网营销骗局揭秘
  • 自己有服务器如何建设微网站十大品牌营销策划公司
  • 做网站吧广州短视频代运营
  • 电商运营怎么学seo的重要性
  • 京东网站建设的经费预算公司网站设计图
  • 成都网站制作定制企业网站的网络营销功能
  • 企业网站介绍b站推广网站入口2023是什么
  • 营销引流100个技巧百度荤seo公司
  • 网站的整合免费b2b平台推广
  • 哈尔滨 门户网站福州网站优化
  • 辽宁建设工程信息网二级建造师查询百度 seo排名查询
  • 网络经营网址怎么注册优化资讯
  • 苏州seo门户网什么是网站优化
  • 杭州做网站外包公司哪家好百度提交入口网址是什么
  • 鄂州网站建设优化百度seo技术搜索引擎
  • 揭阳做网站公司三台网站seo
  • 好123上网从这里开始四川整站优化关键词排名