dbx
dbx copied to clipboard
Cannot dbx execute code from tutorial
Expected Behavior
Be able to execute the covid_analysis_etl_integ workflow from this tutorial in an existing cluster in interactive mode.
Current Behavior
I get the following stack trace:
[dbx][2022-09-27 08:53:35.009] ๐ Deployment file is not provided, searching in the conf directory
[dbx][2022-09-27 08:53:35.014] ๐ก Auto-discovery found deployment file conf\deployment.yml
[dbx][2022-09-27 08:53:35.015] ๐ Deployment file conf\deployment.yml exists and will be used for deployment
[dbx][2022-09-27 08:53:35.018] Legacy environment format is used in project file. Please take a look at the docs and upgrade to the new format version.
[dbx][2022-09-27 08:53:35.021] Using profile provided from the project file
[dbx][2022-09-27 08:53:35.023] Found auth config from provider ProfileEnvConfigProvider, verifying it
[dbx][2022-09-27 08:53:35.024] Found auth config from provider ProfileEnvConfigProvider, verification successful
[dbx][2022-09-27 08:53:35.026] Profile DEFAULT will be used for deployment
[dbx][2022-09-27 08:53:36.502] Executing job: covid_analysis_etl_integ in environment default on cluster my_cluster_name (id: correctly-identified-id)
[dbx][2022-09-27 08:53:36.508] No build logic defined in the deployment file. Default pip-based build logic will be used.
[dbx][2022-09-27 08:53:36.509] Following the provided build logic
[dbx][2022-09-27 08:53:36.511] ๐ Building a Python-based project
[dbx][2022-09-27 08:53:36.513] ๐งน Standard package folder dist already exists, cleaning it before Python package build
[dbx][2022-09-27 08:53:39.191] โ
Python-based project build finished
[dbx][2022-09-27 08:53:39.193] Preparing interactive cluster to accept jobs
[dbx][2022-09-27 08:53:39.295] Preparing execution context
โญโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ Traceback (most recent call last) โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฎ
โ C:\Users\carlafernandez\miniconda3\envs\prueba_dbx\lib\site-packages\dbx\commands\execute.py:134 โ
โ in execute โ
โ โ
โ 131 โ dbx_echo("Preparing interactive cluster to accept jobs") โ
โ 132 โ controller.awake_cluster(cluster_id) โ
โ 133 โ โ
โ โฑ 134 โ context_client = RichExecutionContextClient(api_client, cluster_id) โ
โ 135 โ โ
โ 136 โ controller_instance = ExecutionController( โ
โ 137 โ โ client=context_client, โ
โ โ
โ โญโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ locals โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฎ โ
โ โ _job = 'covid_analysis_etl_integ' โ โ
โ โ _payload = { โ โ
โ โ โ 'name': 'covid_analysis_etl_integ', โ โ
โ โ โ 'spark_python_task': { โ โ
โ โ โ โ 'python_file': 'file://jobs/covid_trends_job.py' โ โ
โ โ โ } โ โ
โ โ } โ โ
โ โ api_client = <databricks_cli.sdk.api_client.ApiClient object at โ โ
โ โ 0x0000024E95F70AC0> โ โ
โ โ cluster_id = '0606-205319-pcu6ddt9' โ โ
โ โ cluster_name = 'paa-sls-datalab-proveedoresanalitica' โ โ
โ โ config = DeploymentConfig( โ โ
โ โ โ environments=[ โ โ
โ โ โ โ EnvironmentDeploymentInfo( โ โ
โ โ โ โ โ name='default', โ โ
โ โ โ โ โ payload=Deployment( โ โ
โ โ โ โ โ โ workflows=[ โ โ
โ โ โ โ โ โ โ { โ โ
โ โ โ โ โ โ โ โ 'name': 'covid_analysis_etl_integ', โ โ
โ โ โ โ โ โ โ โ 'spark_python_task': { โ โ
โ โ โ โ โ โ โ โ โ 'python_file': โ โ
โ โ 'file://jobs/covid_trends_job.py' โ โ
โ โ โ โ โ โ โ โ } โ โ
โ โ โ โ โ โ โ }, โ โ
โ โ โ โ โ โ โ { โ โ
โ โ โ โ โ โ โ โ 'name': 'covid_analysis_etl_prod', โ โ
โ โ โ โ โ โ โ โ 'new_cluster': { โ โ
โ โ โ โ โ โ โ โ โ 'spark_version': โ โ
โ โ '9.1.x-cpu-ml-scala2.12', โ โ
โ โ โ โ โ โ โ โ โ 'num_workers': 1, โ โ
โ โ โ โ โ โ โ โ โ 'node_type_id': 'Standard_DS4_v2' โ โ
โ โ โ โ โ โ โ โ }, โ โ
โ โ โ โ โ โ โ โ 'spark_python_task': { โ โ
โ โ โ โ โ โ โ โ โ 'python_file': โ โ
โ โ 'file://jobs/covid_trends_job.py', โ โ
โ โ โ โ โ โ โ โ โ 'parameters': ['--prod'] โ โ
โ โ โ โ โ โ โ โ } โ โ
โ โ โ โ โ โ โ }, โ โ
โ โ โ โ โ โ โ { โ โ
โ โ โ โ โ โ โ โ 'name': 'covid_analysis_etl_raw', โ โ
โ โ โ โ โ โ โ โ 'new_cluster': { โ โ
โ โ โ โ โ โ โ โ โ 'spark_version': โ โ
โ โ '9.1.x-cpu-ml-scala2.12', โ โ
โ โ โ โ โ โ โ โ โ 'num_workers': 1, โ โ
โ โ โ โ โ โ โ โ โ 'node_type_id': 'Standard_DS4_v2' โ โ
โ โ โ โ โ โ โ โ }, โ โ
โ โ โ โ โ โ โ โ 'spark_python_task': { โ โ
โ โ โ โ โ โ โ โ โ 'python_file': โ โ
โ โ 'file://jobs/covid_trends_job_raw.py' โ โ
โ โ โ โ โ โ โ โ } โ โ
โ โ โ โ โ โ โ } โ โ
โ โ โ โ โ โ ] โ โ
โ โ โ โ โ ) โ โ
โ โ โ โ ) โ โ
โ โ โ ], โ โ
โ โ โ build=BuildConfiguration( โ โ
โ โ โ โ no_build=False, โ โ
โ โ โ โ commands=[], โ โ
โ โ โ โ python=<PythonBuild.pip: 'pip'> โ โ
โ โ โ ) โ โ
โ โ ) โ โ
โ โ config_reader = <dbx.api.config_reader.ConfigReader object at 0x0000024E9625AD70> โ โ
โ โ controller = <dbx.api.cluster.ClusterController object at 0x0000024E95F31CF0> โ โ
โ โ debug = None โ โ
โ โ deployment = EnvironmentDeploymentInfo( โ โ
โ โ โ name='default', โ โ
โ โ โ payload=Deployment( โ โ
โ โ โ โ workflows=[ โ โ
โ โ โ โ โ { โ โ
โ โ โ โ โ โ 'name': 'covid_analysis_etl_integ', โ โ
โ โ โ โ โ โ 'spark_python_task': { โ โ
โ โ โ โ โ โ โ 'python_file': 'file://jobs/covid_trends_job.py' โ โ
โ โ โ โ โ โ } โ โ
โ โ โ โ โ }, โ โ
โ โ โ โ โ { โ โ
โ โ โ โ โ โ 'name': 'covid_analysis_etl_prod', โ โ
โ โ โ โ โ โ 'new_cluster': { โ โ
โ โ โ โ โ โ โ 'spark_version': '9.1.x-cpu-ml-scala2.12', โ โ
โ โ โ โ โ โ โ 'num_workers': 1, โ โ
โ โ โ โ โ โ โ 'node_type_id': 'Standard_DS4_v2' โ โ
โ โ โ โ โ โ }, โ โ
โ โ โ โ โ โ 'spark_python_task': { โ โ
โ โ โ โ โ โ โ 'python_file': 'file://jobs/covid_trends_job.py', โ โ
โ โ โ โ โ โ โ 'parameters': ['--prod'] โ โ
โ โ โ โ โ โ } โ โ
โ โ โ โ โ }, โ โ
โ โ โ โ โ { โ โ
โ โ โ โ โ โ 'name': 'covid_analysis_etl_raw', โ โ
โ โ โ โ โ โ 'new_cluster': { โ โ
โ โ โ โ โ โ โ 'spark_version': '9.1.x-cpu-ml-scala2.12', โ โ
โ โ โ โ โ โ โ 'num_workers': 1, โ โ
โ โ โ โ โ โ โ 'node_type_id': 'Standard_DS4_v2' โ โ
โ โ โ โ โ โ }, โ โ
โ โ โ โ โ โ 'spark_python_task': { โ โ
โ โ โ โ โ โ โ 'python_file': โ โ
โ โ 'file://jobs/covid_trends_job_raw.py' โ โ
โ โ โ โ โ โ } โ โ
โ โ โ โ โ } โ โ
โ โ โ โ ] โ โ
โ โ โ ) โ โ
โ โ ) โ โ
โ โ deployment_file = WindowsPath('conf/deployment.yml') โ โ
โ โ environment = 'default' โ โ
โ โ found_jobs = [ โ โ
โ โ โ { โ โ
โ โ โ โ 'name': 'covid_analysis_etl_integ', โ โ
โ โ โ โ 'spark_python_task': { โ โ
โ โ โ โ โ 'python_file': 'file://jobs/covid_trends_job.py' โ โ
โ โ โ โ } โ โ
โ โ โ } โ โ
โ โ ] โ โ
โ โ jinja_variables_file = None โ โ
โ โ job = None โ โ
โ โ job_payload = { โ โ
โ โ โ 'name': 'covid_analysis_etl_integ', โ โ
โ โ โ 'spark_python_task': { โ โ
โ โ โ โ 'python_file': 'file://jobs/covid_trends_job.py' โ โ
โ โ โ } โ โ
โ โ } โ โ
โ โ no_package = False โ โ
โ โ no_rebuild = False โ โ
โ โ parameters = None โ โ
โ โ pip_install_extras = None โ โ
โ โ requirements_file = WindowsPath('requirements.txt') โ โ
โ โ task = Task( โ โ
โ โ โ spark_python_task=SparkPythonTask( โ โ
โ โ โ โ python_file=WindowsPath('jobs/covid_trends_job.py'), โ โ
โ โ โ โ parameters=[] โ โ
โ โ โ ), โ โ
โ โ โ python_wheel_task=None, โ โ
โ โ โ task_type=<TaskType.spark_python_task: 'spark_python_task'> โ โ
โ โ ) โ โ
โ โ upload_via_context = False โ โ
โ โ workflow = 'covid_analysis_etl_integ' โ โ
โ โฐโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฏ โ
โ โ
โ C:\Users\carlafernandez\miniconda3\envs\prueba_dbx\lib\site-packages\dbx\api\context.py:121 in โ
โ __init__ โ
โ โ
โ 118 โ
โ 119 class RichExecutionContextClient: โ
โ 120 โ def __init__(self, v2_client: ApiClient, cluster_id: str, language: str = "python") โ
โ โฑ 121 โ โ self._client = LowLevelExecutionContextClient(v2_client, cluster_id, language) โ
โ 122 โ โ
โ 123 โ def install_package(self, package_file: str, pip_install_extras: Optional[str]): โ
โ 124 โ โ if pip_install_extras: โ
โ โ
โ โญโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ locals โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฎ โ
โ โ cluster_id = '0606-205319-pcu6ddt9' โ โ
โ โ language = 'python' โ โ
โ โ self = <dbx.api.context.RichExecutionContextClient object at 0x0000024E9625B7C0> โ โ
โ โ v2_client = <databricks_cli.sdk.api_client.ApiClient object at 0x0000024E95F70AC0> โ โ
โ โฐโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฏ โ
โ โ
โ C:\Users\carlafernandez\miniconda3\envs\prueba_dbx\lib\site-packages\dbx\api\context.py:34 in โ
โ __init__ โ
โ โ
โ 31 โ def __init__(self, v2_client: ApiClient, cluster_id: str, language: str = "python"): โ
โ 32 โ โ self._v1_client = ApiV1Client(v2_client) โ
โ 33 โ โ self._cluster_id = cluster_id โ
โ โฑ 34 โ โ self._context_id = self.__get_context_id(language) โ
โ 35 โ โ
โ 36 โ def _wait_for_command_execution(self, command_id: str): โ
โ 37 โ โ finished = False โ
โ โ
โ โญโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ locals โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฎ โ
โ โ cluster_id = '0606-205319-pcu6ddt9' โ โ
โ โ language = 'python' โ โ
โ โ self = <dbx.api.context.LowLevelExecutionContextClient object at 0x0000024E9625A890> โ โ
โ โ v2_client = <databricks_cli.sdk.api_client.ApiClient object at 0x0000024E95F70AC0> โ โ
โ โฐโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฏ โ
โ โ
โ C:\Users\carlafernandez\miniconda3\envs\prueba_dbx\lib\site-packages\dbx\api\context.py:96 in โ
โ __get_context_id โ
โ โ
โ 93 โ โ
โ 94 โ def __get_context_id(self, language: str) -> str: โ
โ 95 โ โ dbx_echo("Preparing execution context") โ
โ โฑ 96 โ โ ctx = LocalContextManager.get_context() โ
โ 97 โ โ โ
โ 98 โ โ if ctx and self.__is_context_available(ctx.context_id): โ
โ 99 โ โ โ dbx_echo("Existing context is active, using it") โ
โ โ
โ โญโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ locals โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฎ โ
โ โ language = 'python' โ โ
โ โ self = <dbx.api.context.LowLevelExecutionContextClient object at 0x0000024E9625A890> โ โ
โ โฐโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฏ โ
โ โ
โ C:\Users\carlafernandez\miniconda3\envs\prueba_dbx\lib\site-packages\dbx\api\context.py:25 in โ
โ get_context โ
โ โ
โ 22 โ @classmethod โ
โ 23 โ def get_context(cls) -> Optional[ContextInfo]: โ
โ 24 โ โ if cls.context_file_path.exists(): โ
โ โฑ 25 โ โ โ return ContextInfo(**JsonUtils.read(cls.context_file_path)) โ
โ 26 โ โ else: โ
โ 27 โ โ โ return None โ
โ 28 โ
โ โ
โ โญโโโโโโโโโโโโโโโโโโโโโโ locals โโโโโโโโโโโโโโโโโโโโโโโโฎ โ
โ โ cls = <class 'dbx.api.context.LocalContextManager'> โ โ
โ โฐโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฏ โ
โ โ
โ C:\Users\carlafernandez\Documents\Projects\my_projects\ide-best-practices\pydantic\main.py:342 โ
โ in pydantic.main.BaseModel.__init__ โ
โ โ
โ [Errno 2] No such file or directory: โ
โ 'C:\\Users\\carlafernandez\\Documents\\Projects\\my_projects\\ide-best-practices\\pydantic\\main โ
โ .py' โ
โฐโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฏ
ValidationError: 1 validation error for ContextInfo
context_id
field required (type=value_error.missing)
Steps to Reproduce (for bugs)
- Follow the steps in this tutorial to set up the environment.
- Comment lines 6-9 from deployment.yml.
- Execute
dbx execute --cluster-name <cluster-name> covid_analysis_etl_integusing an existing cluster of yours.
Context
N/A
Your Environment
- dbx version used: 0.7.5
- Databricks Runtime version: 9.1 LTS ML (includes Apache Spark 3.1.2, Scala 2.12)
- OS: Windows 10 Pro. Version 10.0.19044.
- Virtual environment manager: Anaconda (miniconda)
hi @CarlaFernandez could you please check with the latest version of dbx?