当前位置: 首页 > 知识库问答 >
问题:

在火花sql中注册UDAF

段干祺
2023-03-14

我想注册一个UDAF类(用Scala或Python编写)并在SparkSQL中使用它。
例如:
模拟代码

// mock code:
class MyUDAF extends UserDefinedAggregateFunction{
...
}

spark.udaf.registerJavaFunction("myagg", "MyUDAF",IntegerType)

然后我可以直接在spark sql中使用udaf,如下所示:

spark.sql("select myagg(field) from mytable group by something")

Spark仅提供了Spark.udf。registerJavaFunction方法注册UDF类。

有人知道如何注册UDAF吗?

共有2个答案

龙俭
2023-03-14

您可以为udaf做同样的事情:

spark.udf.register("udaf_name", new UdafClass())

然后,您可以在星火 SQL 中使用它。

万俟均
2023-03-14

您可以使用HiveSQL注册它。

spark.sql("CREATE FUNCTION myagg AS 'com.mysite.MyUDAF'")
spark.sql("select myagg(field) from mytable group by something")
 类似资料:
  • 具有方法: 但是,它在属性提供的facade中不可用/公开 下面是有关RuntimeConfiguration的更多信息: 在创建自己的SparkSession时,有一个明确的解决方法:我们可以调用提供给 然后是一个不太清楚的... 但在运行Spark shell时,已经创建了sparkSession(sparkContext)。那么,如何使非运行时设置生效呢? 这里特别需要: 当尝试在可用于sp

  • 我在aws s3和emr上使用Spark 2.4进行项目,我有一个左连接,有两个巨大的数据部分。火花执行不稳定,它经常因内存问题而失败。 集群有10台m3.2xlarge类型的机器,每台机器有16个vCore、30 GiB内存、160个SSD GB存储。 我有这样的配置: 左侧连接发生在 150GB 的左侧和大约 30GB 的右侧之间,因此有很多随机播放。我的解决方案是将右侧切得足够小,例如 1G

  • 我正在尝试使用Apache Spark,以便将具有多个连接和子选择的(大型)SQL查询的结果加载到来自Spark的DataFrame中,如从SQL查询创建Spark Dataframe中所述。 不幸的是,我这样做的尝试导致了拼花错误: 线程“main”组织中出现异常。阿帕奇。火花sql。AnalysisException:无法推断拼花地板的架构。必须手动指定。 我从谷歌看到的信息表明,当数据帧为空

  • 一些脚本在工作时什么也不做,当我手动运行它们时,其中一个失败了,出现了以下消息: 错误SparkUI:未能绑定SparkUI java.net.bindexception:地址已在使用:服务“SparkUI”在重试16次后失败! 所以我想知道是否有一种特定的方法来并行运行脚本?

  • 如何在火花scala数据帧(非文本)api中访问geomesas UDF?即如何转换 如何使sql UDF在scala数据帧DSL中的文本spark sql API中可用?即如何启用而不是此表达式 类似于 如何注册Geomesa UDF,使其不仅适用于sql文本模式<代码>SQLTypes。init(spark.sqlContext)fromhttps://github.com/locationt