我正在使用 databricks 存储库
我有两个文件,我的函数在另一个名为 folder1 的文件夹中名为 func.py 的文件中
def lower_events(df):
return df.withColumn("event",f.lower(f.col("event")))
我在其中调用 lower_events 的主要笔记本
import pyspark.sql.functions as f
from pyspark.sql.functions import udf, col, lower
import sys
sys.path.append("..")
from folder1 import func
df_clean = func.lower_events(df)
这会返回一个错误
NameError: name 'f' is not defined
但这是有效的
def lower_events(df):
import pyspark.sql.functions as f
from pyspark.sql.functions import col, when
return df.withColumn("event",f.lower(f.col("event")))
该错误是正确的,因为每个单独的 Python 模块都有自己的导入,并且不引用在主模块或其他模块中完成的导入(有关更多详细信息,请参阅Python 文档)。
所以你func.py
应该在某处包含导入 - 在函数本身中不是必需的,它可能在文件的顶层:
import pyspark.sql.functions as f
from pyspark.sql.functions import col, when
def lower_events(df):
return df.withColumn("event",f.lower(f.col("event")))
PS 你也可能不需要sys.path.append("..")
- Databricks Repos 会自动将存储库的根添加到sys.path
.
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句