如何以编程方式检测Databricks环境

时间:2018-07-13 16:13:27

标签: java apache-spark databricks

我正在写一个Spark作业,该作业需要在本地以及在Databricks上都可以运行。

每个环境(文件路径)中的代码必须略有不同,因此我试图找到一种方法来检测作业是否在Databricks中运行。到目前为止,我发现的最好方法是在根目录中查找“ dbfs”目录,如果存在,则假定它在Databricks上运行。这似乎不是正确的解决方案。有谁有更好的主意吗?

4 个答案:

答案 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'