我正在编写一个需要在本地和Databricks上运行的Spark作业。
由于每个环境中的代码略有不同(文件路径),因此我正试图找到一种方法来检测作业是否在Databricks上运行。目前我发现最好的方法是在根目录中查找“dbfs”目录,如果有则假设它正在Databricks上运行。但这不像是正确的解决方法。请问是否有更好的建议?
我正在编写一个需要在本地和Databricks上运行的Spark作业。
由于每个环境中的代码略有不同(文件路径),因此我正试图找到一种方法来检测作业是否在Databricks上运行。目前我发现最好的方法是在根目录中查找“dbfs”目录,如果有则假设它正在Databricks上运行。但这不像是正确的解决方法。请问是否有更好的建议?
您可以简单地检查环境变量是否存在,例如:
def isRunningInDatabricks(): Boolean =
sys.env.contains("DATABRICKS_RUNTIME_VERSION")
"DATABRICKS_RUNTIME_VERSION" in os.environ
。 - DarkHarkdef 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)
}
python: sc._conf.get("spark.home")
结果:'/databricks/spark'
# If it is a file...
try:
__file__
print("It is a file")
except NameError:
print("It is a Databricks notebook")
spark-submit
作业运行吗? - Sai