我是Pyspark的新手,正在询问最佳设计模式/实践:
我正在开发一个库,它应该同时在本地机器和Databricks上运行。
目前正在加载机密。如果代码在数据块上运行,我应该使用dbutils.secrets.get
加载机密,而如果代码在本地机器dotenv.load_dotenv
上运行。
问题:如何创建/引用dbutils
变量(在databricks实例中很容易提供(?pyspark没有这样的模块。。。即使我导入CCD_ 4,我仍然需要在pyspark本地安装中找不到的CCD_。
我目前的解决方案是:如果确定代码在Databricks上运行,我将使用创建dbutils
dbutils = globals()['dbutils']
只需按照文档中描述的方法,将dbutils
的实例化连接到一个函数调用中,该函数调用将根据您是否使用databricks而有所不同:
def get_secret(....):
if spark.conf.get("spark.databricks.service.client.enabled") == "true":
from pyspark.dbutils import DBUtils
return DBUtils(spark).secrets.get(....)
else:
get local secret