在 Databricks Repos 的另一个文件中导入模块如何工作?
How does importing a module in another file in a Databricks Repos work?
我正在使用数据块存储库
我有两个文件,
我在另一个名为 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)
这returns一个错误
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 docs)。
所以你的 func.py
应该在某处包含导入 - 在函数本身中不是必需的,它可以在文件的 top-level 中:
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")))
P.S。您也可能不需要 sys.path.append("..")
- Databricks Repos 会自动将存储库的根目录添加到 sys.path
.
我正在使用数据块存储库
我有两个文件, 我在另一个名为 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)
这returns一个错误
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 docs)。
所以你的 func.py
应该在某处包含导入 - 在函数本身中不是必需的,它可以在文件的 top-level 中:
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")))
P.S。您也可能不需要 sys.path.append("..")
- Databricks Repos 会自动将存储库的根目录添加到 sys.path
.