在SPARK中,如何定义将由所有scala脚本共享的公共UDF /代码库

时间:2017-09-19 08:19:22

标签: scala apache-spark

我在SPARK中有多个scala脚本,每个脚本都需要uprUDF

EG。 Test1.scala

val dataset = Seq((0, "hello"), (1, "world")).toDF("id", "text")
import org.apache.spark.sql.functions.udf
val uprUDF = udf((lname: String
                  ) => {
  lname.toUpperCase
})
dataset.withColumn("upper", uprUDF('text)).show

此处uprUDF是用户定义的函数,并希望将uprUDF放在一些公共代码库/脚本中,其他所有scala脚本都可以访问uprUDF

与Hive一样,我们在java(常用UDF的存储库)中创建了udf,并在Hive中注册以使用它。

我的问题

  1. 我们怎样才能做到这一点?
    一个。我们如何创建/维护公共代码库和 湾我们如何访问Test1.scala中的公共代码

1 个答案:

答案 0 :(得分:0)

这是独立Spark脚本的限制,可以通过在jar中构建所需的scala类来消除,然后可以在集群中部署和运行。在scala类中,常见的UDF实用程序函数可以在一个类中聚合,可以在需要时将其导入到主要的spark应用程序可运行类中。 构建spark jar的标准方法是使用maven构建工具。

https://spark.apache.org/docs/latest/building-spark.html