You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PySpark UDF报错‘No module named deep_translator’问题求助

问题原因与解决方案

问题原因

PySpark基于分布式架构运行:Notebook所在的driver节点仅负责任务调度,实际的数据计算逻辑(包括UDF)会分发到集群的worker节点执行。你仅在driver环境中安装了deep_translator依赖,但worker节点的Python环境中未部署该包,导致UDF执行时触发ModuleNotFoundError。

解决方法(针对Microsoft Fabric环境)

方法1:Notebook内临时安装(快速验证)

在导入deep_translator前,使用Fabric Notebook支持的%pip命令安装依赖,该命令会自动将包同步到所有worker节点:

%pip install deep_translator

执行后按照提示重启Notebook内核,再运行你的翻译代码即可。

方法2:集群库配置(长期复用)

如果需要在多个Notebook或任务中使用该依赖,可以配置集群全局库:

  • 进入你的Fabric Spark集群配置页面
  • 找到「库」选项,添加PyPI包deep_translator(可指定版本)
  • 重启集群,所有worker节点会自动预装该依赖

优化后的翻译代码

原代码每次调用UDF都会创建GoogleTranslator实例,效率较低,且未处理空值场景,优化后的代码如下:

from deep_translator import GoogleTranslator
from pyspark.sql.functions import udf
from pyspark.sql.types import StringType

# 全局初始化翻译器,每个worker进程仅初始化一次
translator = GoogleTranslator(source='en', target='es')

def translate(to_translate):
    # 处理空值,避免翻译器报错
    if to_translate is None:
        return None
    return translator.translate(to_translate)

translate_udf = udf(translate, StringType())

# 简化UDF调用,直接传入列名字符串
df_pais_traducido = df_campo_calculado.withColumn('ds_pais_es', translate_udf('ds_pais'))

display(df_pais_traducido.select('ds_pais', 'ds_pais_es'))

内容的提问来源于stack exchange,提问作者Martín Mas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 02:18:21