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

有没有专门做图的网站问题谁负责

有没有专门做图的网站,问题谁负责,网站核心推广思路,推广策略的英文文章目录 1.UDF2.UDAF2.1 UDF函数实现原理2.2需求:计算用户平均年龄2.2.1 使用RDD实现2.2.2 使用UDAF弱类型实现2.2.3 使用UDAF强类型实现 1.UDF 用户可以通过 spark.udf 功能添加自定义函数#xff0c;实现自定义功能。 如#xff1a;实现需求在用户name前加上Name:… 文章目录 1.UDF2.UDAF2.1 UDF函数实现原理2.2需求:计算用户平均年龄2.2.1 使用RDD实现2.2.2 使用UDAF弱类型实现2.2.3 使用UDAF强类型实现 1.UDF 用户可以通过 spark.udf 功能添加自定义函数实现自定义功能。 如实现需求在用户name前加上Name:字符串并打印在控制台 def main(args: Array[String]): Unit {//创建上下文环境配置对象val conf: SparkConf new SparkConf().setMaster(local[*]).setAppName(SparkSQLDemo03)//创建 SparkSession 对象val sc: SparkSession SparkSession.builder().config(conf).getOrCreate()import sc.implicits._//创建DataFrameval dataRDD: RDD[(String,Int)] sc.sparkContext.makeRDD(List((zhangsan,21),(lisi,24)))val dataframe dataRDD.toDF(name,age)//注册udf函数sc.udf.register(addName,(x:String)Name:x)//创建临时视图dataframe.createOrReplaceTempView(people)//对临时视图使用udf函数sc.sql(select addName(name) from people).show()sc.stop()}2.UDAF 强类型的 Dataset 和弱类型的 DataFrame 都提供了相关的聚合函数 如 count()countDistinct()avg()max()min()。除此之外用户可以设定自己的自定义聚合函数。**通过继承 UserDefinedAggregateFunction 来实现用户自定义弱类型聚合函数。**从 Spark3.0 版本后UserDefinedAggregateFunction 已经不推荐使用了。可以统一采用强类型聚合函数Aggregator。 2.1 UDF函数实现原理 在Spark中UDF用户自定义函数在对表中的数据进行处理时通常会将数据放入缓冲区中以便进行计算。这种缓冲策略可以提高数据处理的效率特别是对于大数据集。 2.2需求:计算用户平均年龄 2.2.1 使用RDD实现 val dataRDD: RDD[(String,Int)] sc.sparkContext.makeRDD(List((zhangsan,21),(lisi,24),(wangwu,26)))val reduceResult: (Int, Int) dataRDD.map({case (name, age) {(age, 1)}}).reduce((t1, t2) {(t1._1 t2._1, t1._2 t2._2)})println(reduceResult._1/reduceResult._2)2.2.2 使用UDAF弱类型实现 需要用户自定义类实现UserDefinedAggregateFunction并重写其中的方法当前已不推荐使用。 package bigdata.wordcount.udfimport org.apache.spark.SparkConf import org.apache.spark.rdd.RDD import org.apache.spark.sql.{DataFrame, Dataset, Row, SparkSession} import org.apache.spark.sql.expressions.{MutableAggregationBuffer, UserDefinedAggregateFunction} import org.apache.spark.sql.types.{DataType, DoubleType, IntegerType, LongType, StructField, StructType} import org.apache.spark.util.AccumulatorV2/*** 用户自定义函数*/ object UDF_Demo02 {def main(args: Array[String]): Unit {//创建上下文环境配置对象val conf: SparkConf new SparkConf().setMaster(local[*]).setAppName(SparkSQLDemo03)//创建 SparkSession 对象val sc: SparkSession SparkSession.builder().config(conf).getOrCreate()import sc.implicits._val dataRDD: RDD[(String, Int)] sc.sparkContext.makeRDD(List((zhangsan, 19), (lisi, 21), (wangwu, 22)))val dataFrame: DataFrame dataRDD.toDF(name,age)dataFrame.createOrReplaceTempView(user)//创建聚合函数var myAvgnew MyAverageUDAF()//在Spark中注册自定义的聚合函数sc.udf.register(avgMy,myAvg)sc.sql(select avgMy(age) from user).show()sc.stop()}case class User(var name:String,var age:Int)}class MyAverageUDAF extends UserDefinedAggregateFunction{//输入的要进行聚合的参数的类型override def inputSchema: StructType StructType(Array(StructField(age,IntegerType)))//聚合函数缓冲区中的值的数据类型override def bufferSchema: StructType StructType(Array(StructField(sum,LongType),StructField(count,LongType)))//函数返回的值的数据类型override def dataType: DataType DoubleType//判断函数的稳定性//对于相同类型的输入是否有相同类型的输出override def deterministic: Boolean true//聚合函数缓冲区中值的初始化//因为数据是弱类型的函数缓冲区中是根据索引来找到对应的变量override def initialize(buffer: MutableAggregationBuffer): Unit {//年龄的总和buffer(0)0L//年龄的个数buffer(1)0L}//更新缓冲区中的数据(执行操作步骤)override def update(buffer: MutableAggregationBuffer, input: Row): Unit {//第0个索引值是否为空if(!input.isNullAt(0)) {//更新年龄sum的值buffer(0)buffer.getLong(0)input.getInt(0)//更新年龄个数buffer(1)buffer.getLong(1)1;}}//合并缓冲区override def merge(buffer1: MutableAggregationBuffer, buffer2: Row): Unit {buffer1(0)buffer1.getLong(0)buffer2.getLong(0)buffer1(1)buffer1.getLong(1)buffer2.getLong(1)}//计算最终结果override def evaluate(buffer: Row): Double {buffer.getLong(0).toDouble / buffer.getLong(1)} }2.2.3 使用UDAF强类型实现 Spark3.0 版本可以采用强类型的 Aggregator 方式代替 UserDefinedAggregateFunction package bigdata.wordcount.udfimport org.apache.spark.SparkConf import org.apache.spark.rdd.RDD import org.apache.spark.sql.{DataFrame, Dataset, Encoder, Encoders, Row, SparkSession, TypedColumn} import org.apache.spark.sql.expressions.{Aggregator, MutableAggregationBuffer, UserDefinedAggregateFunction} import org.apache.spark.sql.types.{DataType, DoubleType, IntegerType, LongType, StructField, StructType} import org.apache.spark.util.AccumulatorV2/*** 用户自定义函数*/ object UDF_Demo03 {def main(args: Array[String]): Unit {//创建上下文环境配置对象val conf: SparkConf new SparkConf().setMaster(local[*]).setAppName(SparkSQLDemo03)//创建 SparkSession 对象val sc: SparkSession SparkSession.builder().config(conf).getOrCreate()import sc.implicits._val dataRDD: RDD[(String, Int)] sc.sparkContext.makeRDD(List((zhangsan, 19), (lisi, 21), (wangwu, 22)))val dataFrame: DataFrame dataRDD.toDF(name,age)val dataset: Dataset[User01] dataFrame.as[User01]//创建聚合函数var myAvgnew MyAverageUDAF01()//将聚合函数转换为查询的列val col: TypedColumn[User01, Double] myAvg.toColumn//执行查询操作dataset.select(col).show()sc.stop()}case class User(var name:String,var age:Int)}//输入数据类型 case class User01(var name:String,var age:Int) //缓存中的数据类型 case class AgeBuffer(var sum:Long,var count:Long)class MyAverageUDAF01 extends Aggregator[User01,AgeBuffer,Double]{//设置初始值override def zero: AgeBuffer {AgeBuffer(0L,0L)}//缓冲区实现聚合override def reduce(b: AgeBuffer, a: User01): AgeBuffer {b.sum b.sum a.ageb.count b.count 1b}//合并缓冲区override def merge(b1: AgeBuffer, b2: AgeBuffer): AgeBuffer {b1.sumb2.sumb1.countb2.countb1}//计算最终结果override def finish(buff: AgeBuffer): Double {buff.sum.toDouble/buff.count}//设置编码器和解码器//自定义类型就是 product 自带类型根据类型选择override def bufferEncoder: Encoder[AgeBuffer] {Encoders.product}override def outputEncoder: Encoder[Double] {Encoders.scalaDouble} }
http://www.w-s-a.com/news/264694/

相关文章:

  • 一元云购网站开发wordpress博客空间
  • 深圳高端网站建设公司排名如何搭建局域网服务器
  • 照片管理网站模板高端网站开发哪家好
  • 黄冈网站制作wordpress为什么不能显示域名
  • 做网站设计怎么进企业电子商务网站建设与管理教材
  • 设计广告公司网站建设网站开发技术选择
  • 个人网站教程个人网站有必要备案吗
  • 网站建设推广好做吗黄浦企业网站制作
  • 怎样做28网站代理中山网站建设方案外包
  • vs2010做网站前台搭建小网站
  • 做视频必须知道的一些网站wordpress 标签鼠标滑过_弹出的title 代码美化
  • 怎么做室内设计公司网站电商运营培训视频课程
  • 昆明网站策划天津市建筑信息平台
  • 三亚放心游app官方网站wordpress 个人主题
  • 做简单的网站备案平台新增网站
  • 中国建设网站银行网络营销推广方案整合
  • 网站域名列表dede网站白屏
  • 站长工具一区品牌建设卓有成效
  • 电子商务网站建设案例wordpress批量编辑
  • 想代理个网站建设平台100个最佳市场营销案例
  • 钟表东莞网站建设石家庄做网站时光
  • 织梦 图片网站源码成都建设工程安监局网站
  • 做兼职的网站策划书湖北省建设工程造价信息网
  • 企业网站网址长期做网站应该购买稳定的空间
  • 网站静态化设计html5手机网站制作
  • 深圳最简单的网站建设家居网站建设全网营销
  • 如何取消网站备案佛山网站优化公司
  • 网站开发 成都广水网站设计
  • 音乐网站建设目标合同管理系统
  • jq网站特效插件如何知道网站是否被k