Spark管道中的UDF

时间:2018-02-12 13:07:27

标签: apache-spark pyspark user-defined-functions

我在python中创建一个UDF来计算表中两个日期列之间的日期数组,并将其注册到spark会话。我在管道中使用此UDF来计算新列。

现在,当我将此管道保存到HDFS并期望将其回读以在不同的程序(具有不同的spark会话)中执行时,UDF不可用,因为它未在全球任何地方注册。由于该过程是通用的并且需要运行多个管道,我不想添加UDF定义并将其注册到那里的spark会话。

我是否还要在所有火花会话中全局注册UDF?

我可以以一种整洁的可维护方式将其作为依赖添加吗?

1 个答案:

答案 0 :(得分:0)

我在尝试从python中保存它并在scala中导入时遇到同样的问题。

  • 我想我会用SQL做我想做的事。

  • 我也看到了I could use python .py file in Scala,但我还没有找到在UDF转换器中使用它的方法。

  • 如果你想使用java管道中的public function RechercheEnregistrementCritere($champ,$critere){ $retour=array(); $datas = $this->ToutEnregistrement(); foreach ($datas as $key => $row) { if($row->$champ == $critere ){$retour[]=$row;} }return $retour;} 认为可以使用pyspark(或者sql_context.udf.registerJavaFunction)使用UDF的jar,这似乎为我工作,但我不在乎,因为我需要    做python =>阶。