databricks 笔记本小部件重新创建使用缓存值问题

问题描述 投票:0回答:1

删除并重新创建 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 之间共享参数

databricks
1个回答
0
投票

我遇到了同样的问题。 remove() 和removeAll() 什么也没做。按照建议单独运行单元也没有任何作用,而且也不是长期的选择。我在文档中找到了这个,我觉得它不是很有帮助,但至少它表明可能没有解决方案:

https://docs.databricks.com/en/notebooks/widgets.html

存在一个已知问题,即按“全部运行”后,即使在代码中清除或删除小部件后,小部件状态也可能无法正确清除。如果发生这种情况,您将看到小部件的视觉状态与其打印状态之间存在差异。单独重新运行单元可能会绕过此问题。为了完全避免此问题,Databricks 建议您使用 ipywidgets

© www.soinside.com 2019 - 2024. All rights reserved.