如何导入一个模块在另一个文件中的Databricks Repos工作?



我正在使用databricks repos

我有两个文件,我的函数在一个名为function .py的文件中在另一个名为folder1

的文件夹中
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")))

注:你也可能不需要sys.path.append("..")- Databricks Repos会自动添加存储库的根目录到sys.path

相关内容

  • 没有找到相关文章