02-14-2023 08:02 AM
we are switching over to Unity Catalog and attempting to confirm the ability to run our existing notebooks. I have created a new Shared Unity Catalog Cluster and ran the notebook using the new cluster. Ran into an error attempting to execute a print statement. The information is displayed using the original cluster, and will also display the information when running the UC cluster in a single Access mode, but NOT "Shared"
print(dbutils.notebook.entry_point.getDbutils().notebook().getContext().toJson())
Error Returned:
py4j.security.Py4JSecurityException: Method public java.lang.String com.databricks.backend.common.rpc.CommandContext.toJson() is not whitelisted on class class com.databricks.backend.common.rpc.CommandContext
Has anyone determined the appropriate work around for this scenario?
08-10-2023 07:26 AM
Any updates on this problem?
01-18-2024 07:06 AM - edited 01-18-2024 07:12 AM
Depending on what you're trying to do with dbutils.notebook.entry_point.getDbutils().notebook().getContext().toJson() , there could be some workarounds. If all you're trying to do is get information like the job_id, run_id, time of run, etc. you can just use dynamic value references in the job. So for instance, in a notebook, you could say:
dbutils.widgets.text("job_id","")
job_id = dbutils.widgets.get("job_id")
Then in your task, when you specify params, you could use the dynamic value to pass the appropriate runtime value to the widget like so:
You can also do this as a job parameter if you need this value passed to all jobs.
Hope this helps someone who is using the context json for this simple purpose!
01-29-2024 09:49 AM
I faced the same issue when switching to Shared Access cluster and found that there is a possibility to run :
dbutils.notebook.entry_point.getDbutils().notebook().getContext().safeToJson()
Hope this helps
04-10-2024 06:50 PM
this works here, thank you!
10-18-2024 06:15 PM
To replace dbutils.notebook.entry_point.getDbutils().notebook().getContext().toJson() and related APIs try:
from dbruntime.databricks_repl_context import get_context
token = get_context().apiToken
host = get_context().browserHostName
get_context().__dict__
Passionate about hosting events and connecting people? Help us grow a vibrant local community—sign up today to get started!
Sign Up Now