iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >spark2.4.3中sparkSQL用户自定义函数该怎么理解
  • 259
分享到

spark2.4.3中sparkSQL用户自定义函数该怎么理解

2023-06-02 15:06:26 259人浏览 八月长安
摘要

这期内容当中小编将会给大家带来有关spark2.4.3中sparksql用户自定义函数该怎么理解,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1、简介从Spark2.0以上的版本开始,spark是使用全新

这期内容当中小编将会给大家带来有关spark2.4.3中sparksql用户自定义函数该怎么理解,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

1、简介

从Spark2.0以上的版本开始,spark是使用全新的SparkSession接口代替Spark1.6中的SQLcontext和HiveContext

来实现对数据的加载、转换、处理等工作,并且实现了SQLcontext和HiveContext的所有功能。

我们在新版本中并不需要之前那么繁琐的创建很多对象,只需要创建一个SparkSession对象即可。

SparkSession支持从不同的数据源加载数据,并把数据转换成DataFrame,并支持把DataFrame转换成SQLContext自身中的表。

然后使用SQL语句来操作数据,也提供了HiveQL以及其他依赖于Hive的功能支持。

创建SparkSession

SparkSession 是 Spark SQL 的入口。

使用 Dataset 或者 Datafram 编写 Spark SQL 应用的时候,第一个要创建的对象就是 SparkSession。

Builder 是 SparkSession 的构造器。 通过 Builder, 可以添加各种配置。

Builder 的方法如下:

MethodDescription
getOrCreate获取或者新建一个 sparkSession
enableHiveSupport增加支持 hive Support
appName设置 application 的名字
config设置各种配置

2、sparkSQL基本使用方法

使用的spark版本2.4.3

spark 1.x中的SQLContext在新版本中已经被废弃,改为SparkSession.builder

spark2.4.3中sparkSQL用户自定义函数该怎么理解

可以写成

val conf = new SparkConf().setAppName("helloworld").setMaster("local[*]")val spark1=SparkSession.builder().config(conf).getOrCreate()

或(sparksession构造器私有化在builder中)

val spark = SparkSession.builder      .appName("my spark application")      .master("local[2]")      .getOrCreate()

例:

import org.apache.spark.sql.SparkSessionobject HelloWorld {  def main(args: Array[String]): Unit = {       val spark = SparkSession.builder      .appName("my spark application")      .master("local[2]")      .getOrCreate()    //读取数据    val df = spark.read.JSON("/usr/local/opt/spark-2.4.3/examples/src/main/resources/people.json")    //展示所有数据    df.show()  //DSL    df.select("name").show()    //SQL    df.createTempView("people")    spark.sql("select * from people where age=30").show()    //关闭    spark.close()  }}

输出结果 1:

 //展示所有数据    df.show()

spark2.4.3中sparkSQL用户自定义函数该怎么理解

输出结果 2:

//DSL    df.select("name").show()

spark2.4.3中sparkSQL用户自定义函数该怎么理解

输出结果 3:

//SQL    df.createTempView("people")    spark.sql("select * from people where age=30").show()

spark2.4.3中sparkSQL用户自定义函数该怎么理解

3、通过udf自定义用户函数addName (实现将字段x前拼接上name:x)

Scala> spark.read.json("./examples/src/main/resources/people.json")res32: org.apache.spark.sql.DataFrame = [age: bigint, name: string]scala> res32.createOrReplaceTempView("people")scala> spark.sql("select * from people")res38: org.apache.spark.sql.DataFrame = [age: bigint, name: string]scala> spark.sql("select * from people").show+----+-------+| age|   name|+----+-------+|null|Michael||  30|   Andy||  19| Justin|+----+-------+scala> spark.udf.reGISter("addName",(x:String)=> "name:"+x)res40: org.apache.spark.sql.expressions.UserDefinedFunction = UserDefinedFunction(<function1>,StringType,Some(List(StringType)))scala> spark.sql("select addName(name) as name from people").show+------------+|        name|+------------+|name:Michael||   name:Andy|| name:Justin|+------------+

4、通过udaf自定义用户函数

package com.ny.serviceimport org.apache.spark.sql.expressions.{MutableAggregationBuffer, UserDefinedAggregateFunction}import org.apache.spark.sql.types._import org.apache.spark.sql.{Row, SparkSession}class CustomerAvg extends UserDefinedAggregateFunction {  //输入的类型  override def inputSchema: StructType = StructType(StructField("salary", LongType) :: Nil)  //缓存数据的类型  override def bufferSchema: StructType = {    StructType(StructField("sum", LongType) :: StructField("count", LongType) :: Nil)  }  //返回值类型  override def dataType: DataType = LongType  //幂等性  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 = {    buffer(0)=buffer.getLong(0) +input.getLong(0)    buffer(1)=buffer.getLong(1)+1L  }//合并 分区与分区之间操作  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): Any = {    buffer.getLong(0)/buffer.getLong(1)  }}object CustomerAvg{  def main(args: Array[String]): Unit = {     val spark= SparkSession.builder()       .appName("MyAvg")       .master("local[2]")       .getOrCreate()    spark.udf.register("MyAvg",new CustomerAvg)//读数据    val frame = spark.read.json("/usr/local/opt/spark-2.4.3/examples/src/main/resources/peopleCP.json")   frame.createTempView("peopleCP")    spark.sql("select MyAvg(age) avg_age from peopleCP").show()    spark.stop()  }}
nancylulululu:resources nancy$ vi peopleCP.json {"name":"Michael","age":11}{"name":"Andy", "age":30}{"name":"Justin", "age":19}

返回结果

spark2.4.3中sparkSQL用户自定义函数该怎么理解

上述就是小编为大家分享的spark2.4.3中sparkSQL用户自定义函数该怎么理解了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注编程网精选频道。

--结束END--

本文标题: spark2.4.3中sparkSQL用户自定义函数该怎么理解

本文链接: https://www.lsjlt.com/news/230439.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • spark2.4.3中sparkSQL用户自定义函数该怎么理解
    这期内容当中小编将会给大家带来有关spark2.4.3中sparkSQL用户自定义函数该怎么理解,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1、简介从Spark2.0以上的版本开始,spark是使用全新...
    99+
    2023-06-02
  • SparkSQL的自定义函数UDF使用
    目录Spark_SQL的UDF使用UDF简单使用Spark_SQL的UDF使用 用户自定义函数,也叫UDF,可以让我们使用Python/Java/Scala注册自定义函数,并在SQL...
    99+
    2023-02-01
    Spark SQL UDF Spark自定义函数UDF
  • MySQL中怎么自定义函数
    MySQL中怎么自定义函数,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。控制流程函数  case...when  根据值判断返...
    99+
    2024-04-02
  • shell中怎么自定义函数
    shell中怎么自定义函数,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。一、定义函数代码如下:function fname(){statements;}或代码如...
    99+
    2023-06-09
  • python中怎么自定义函数
    这篇文章主要讲解了“python中怎么自定义函数”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“python中怎么自定义函数”吧!  python中支持自定义函数  以def开头,后接标识符名...
    99+
    2023-06-01
  • PHP 用户自定义函数的创建
    php 自定义函数允许封装代码块,简化代码并提高可维护性。语法:function function_name(argument1, argument2, ...) { // 代码块 }。...
    99+
    2024-04-14
    php 自定义函数
  • PHP 用户自定义函数的创建和管理
    php 用户自定义函数可以执行特定任务并重复使用。创建自定义函数需要使用特定语法,指定函数名和参数。示例展示了如何计算不同形状的面积。调用自定义函数类似于调用内建函数。管理自定义函数包括...
    99+
    2024-04-14
    函数 php
  • GRDB中怎么自定义纯函数
    GRDB中怎么自定义纯函数,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。GRDB自定义的纯函数在GRDB中,用户可以自定义SQlite函数。这样,在SQL语句中,可以直接调...
    99+
    2023-06-04
  • Linq中用户定义函数的原理是什么
    Linq中用户定义函数的原理是什么,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Linq用户定义函数我们可以在LINQ to SQL中使用Linq用户定义函数。只要把Lin...
    99+
    2023-06-17
  • sqlserver中怎么自定义并调用函数
    在 SQL Server 中,可以通过以下步骤自定义并调用函数: 创建函数:使用 `CREATE FUNCTION` 语句创建函...
    99+
    2023-10-25
    sqlserver
  • SqlServer系列笔记——用户自定义函数
     用户自定义函数不能用于执行一系列改变数据库状态的操作,但它可以像系统函数一样在查询或存储过程等的程序段中使用,也可以像存储过程一样通过 EXECUTE 命令来执行。    在 SQL ...
    99+
    2024-04-02
  • python自定义函数报错未定义怎么解决
    当你调用一个自定义函数时出现 "未定义" 的错误,可能是因为以下几个原因:1. 函数没有被正确定义:确保你在调用函数之前已经正确定义...
    99+
    2023-10-10
    python
  • mysql怎么调用自定义函数
    mysql调用自定义函数的方法:1、在Navicat工具中点击界面上的“函数”。进入函数操作界面后点击新建函数。2、继续点击弹窗中的“函数”。3、设置函数的参数名和参数类型。设置完成后点击“下一步”。4、继续设置函数的返回类型。设置后点击“...
    99+
    2024-04-02
  • Django 中怎么自定义用户模块
    这篇文章将为大家详细讲解有关Django 中怎么自定义用户模块,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。1、概述Django中自带的User Model使用起来是比较方便的,但是通常我们...
    99+
    2023-06-02
  • Hive中怎么添加自定义函数
    这篇文章主要讲解了“Hive中怎么添加自定义函数”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Hive中怎么添加自定义函数”吧!环境介绍:CentOS7+hive-1.1.0-cdh6.7....
    99+
    2023-06-03
  • tensorflow2中怎么自定义损失函数
    tensorflow2中怎么自定义损失函数,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。Keras的核心原则是逐步揭示复杂性,可以在保持相应的高级便利性的同时,对操作细节进行更...
    99+
    2023-06-20
  • Pig中怎么编写自定义函数
    要在Pig中编写自定义函数,可以按照以下步骤进行: 创建一个实现了EvalFunc 接口的自定义函数类,并重写evaluate 方...
    99+
    2024-04-02
  • PHP 预定义函数和用户自定义函数的执行顺序有什么区别?
    php 执行函数遵循特定顺序:1. 预定义函数(最高优先级);2. 用户自定义函数(按声明顺序)。预定义函数优先于自定义函数,例如 echo() 在 myfunction() 之前执行。...
    99+
    2024-04-17
    php 函数执行顺序
  • pyqt5怎么自定义槽函数
    要自定义槽函数,你需要按照以下步骤进行操作: 在你的PyQt5应用程序的主窗口类中定义一个新的函数作为槽函数。例如,你可以在主窗口...
    99+
    2024-02-29
    pyqt5
  • Vue怎么自定义hook函数
    这篇文章主要介绍“Vue怎么自定义hook函数”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Vue怎么自定义hook函数”文章能帮助大家解决问题。定义什么是hook本质是一个函数,把 setup 函...
    99+
    2023-07-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作