我在python中创建一个UDF来计算表中两个日期列之间的日期数组,并将其注册到spark会话。我在管道中使用此UDF来计算新列。
现在,当我将此管道保存到HDFS并期望将其回读以在不同的程序(具有不同的spark会话)中执行时,UDF不可用,因为它未在全球任何地方注册。由于该过程是通用的并且需要运行多个管道,我不想添加UDF定义并将其注册到那里的spark会话。
我是否还要在所有火花会话中全局注册UDF?
我可以以一种整洁的可维护方式将其作为依赖添加吗?
答案 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 =>阶。