删除并重新创建 databricks 笔记本小部件不起作用。这个机制是 btq-sort eval 笔记本
dbutils.widgets.text("widget_param", 'temp')
widget_param = dbutils.widgets.get("widget_param")
print(f'initial widget_param: {widget_param}')
# initial widget_param: temp
print('removing widget'
dbutils.widgets.remove("widget_param")
new_widget_value = 'temp2'
try:
print('verifying widget removed')
print(f'mlflow_run_id in widget: {dbutils.widgets.get("widget_param")}')
except Exception as e:
print('Widget not set!')
# verifying widget removed
# Widget not set!
print(f'recreate widget with new default value: {new_widget_value}')
# recreate widget with new default value: temp2
dbutils.widgets.text("widget_param", defaultValue=new_widget_value)
print(f'New widget_param in widget: {dbutils.widgets.get("widget_param")}')
# New widget_param in widget: temp
为什么不设置新值?有没有办法清除 dbutils 缓存?有什么解决方法吗? 我需要它能够在 %scala 和 %python envs 之间共享参数
我遇到了同样的问题。 remove() 和removeAll() 什么也没做。按照建议单独运行单元也没有任何作用,而且也不是长期的选择。我在文档中找到了这个,我觉得它不是很有帮助,但至少它表明可能没有解决方案:
https://docs.databricks.com/en/notebooks/widgets.html
存在一个已知问题,即按“全部运行”后,即使在代码中清除或删除小部件后,小部件状态也可能无法正确清除。如果发生这种情况,您将看到小部件的视觉状态与其打印状态之间存在差异。单独重新运行单元可能会绕过此问题。为了完全避免此问题,Databricks 建议您使用 ipywidgets。