我正在写一个Spark作业,该作业需要在本地以及在Databricks上都可以运行。
每个环境(文件路径)中的代码必须略有不同,因此我试图找到一种方法来检测作业是否在Databricks中运行。到目前为止,我发现的最好方法是在根目录中查找“ dbfs”目录,如果存在,则假定它在Databricks上运行。这似乎不是正确的解决方案。有谁有更好的主意吗?
答案 0 :(得分:0)
如何?
Python:
def isLocal():
setting = spark.conf.get("spark.master")
return ("local" in setting)
斯卡拉:
def isLocal(): Boolean = {
val setting = spark.conf.get("spark.master")
return ("local" contains setting)
}
答案 1 :(得分:0)
您可以简单地检查是否存在环境变量,例如:
def isRunningInDatabricks(): Boolean =
sys.env.contains("DATABRICKS_RUNTIME_VERSION")
答案 2 :(得分:0)
这很简单。 Databricks 笔记本不是文件。
# If it is a file...
try:
__file__
print("It is a file")
except NameError:
print("It is a Databricks notebook")
答案 3 :(得分:-1)
您可以查找spark配置环境变量,例如 “ spark.home” ,值是 / databricks / spark
python: sc._conf.get(“ spark.home”)
结果: '/ databricks / spark'