基于数据块的pyspark笔记本作业的连续交付工具。
dblo的Python项目详细描述
dbloy
一个databricks部署cli工具,用于连续交付基于pyspark笔记本的作业。
安装
$ pip install dbloy
用法
使用身份验证令牌使用数据块进行身份验证:
$ dbloy configure
更新数据块作业
$ dbloy apply --deploy-yml deploy.yml --configmap-yml configmap.yml --version <my_version_number>
其中deploy.yml
和configmap.yml
包含作业规范。作业版本在<my_version_number>
工作流程
来源:https://databricks.com/blog/2017/10/30/continuous-integration-continuous-delivery-databricks.html
示例用法
有关使用gitlab的ci/cd的示例etl存储库,请参见example/gitlab_my-etl-job。
展开需要以下各项:
- 部署清单
- 配置清单
- 本地可用的主数据块笔记本源文件。
- (可选)附加的包含核心逻辑的python库。这使得对
创建展开
deploy.yml
kind:Deploymentmetadata:name:my-etl-jobworkspace:Sharedtemplate:job:name:My ETL Jobnotifications:email:no_alert_for_skipped_runs:trueon_failure :-my_email@my_org.combase_notebook:mainnotebooks:-EPHEMERAL_NOTEBOOK_1:notebook_name1-EPHEMERAL_NOTEBOOK_2:notebook_name2libraries:-egg_main:dbfs:/python35/my_python_lib/my_python_lib-VERSION-py3.5.egg-egg:dbfs:/python35/static_python_lib.egg-pypi:package:scikit-learn==0.20.3-pypi:package:statsmodels==0.10.1-pypi:package:prometheus-client==0.7.1-jar:dbfs:/FileStore/jars/e9b87e4c_c754_4707_a62a_44ef47535b39-azure_cosmosdb_spark_2_4_0_2_11_1_3_4_uber-38021.jarrun:max_concurrent_runs:1max_retries:1min_retry_interval_millis:600000retry_on_timeout:truetimeout_seconds:10800
configmap.yml
kind:ConfigMapmetadata:namespace:productionparams:DB_URL:production_db_url_1DB_PASSWORD:production_password123job:id:289schedule:quartz_cron_expression:"000**?"timezone_id:"Europe/Berlin"max_retries:"1"cluster:spark_version:"5.3.x-scala2.11"node_type_id:"Standard_DS3_v2"driver_node_type_id:"Standard_DS3_v2"autoscale:min_workers:1max_workers:2spark_env_vars:PYSPARK_PYTHON:"/databricks/python3/bin/python3"
在本例中:
- 数据块上的作业id
289
,由configmap.yml
中的.job.id
字段指示,将用My ETL Job
名称更新,由deploy.yml
中的.template.job.name
字段指示。 - 集群将按需创建,由
configmap.yml
中的字段.cluster
指定。有关群集设置的完整列表,请参见https://docs.databricks.com/api/latest/clusters.html#request-structure。{STR 1 } $ Note < /St>:设置^ {CD12}}将使用现有的群集。 - 由
.deploy.yml
中的字段.template.libraries
指定的库将安装在群集上。见https://docs.databricks.com/api/latest/libraries.html#library。 注意:字段.template.libraries.egg_main
是为使用etl作业进行版本控制的python.egg
文件保留的。 例如,当etl作业的主逻辑放入库中时。.egg
版本号应与ETL版本号相同。 - 作业将执行的主任务笔记本由
deploy.yml
中的字段.template.base_notebook
定义。任务参数由configmap.yml
中的字段.params
指定,笔记本可通过dbutils
访问该字段。 - 由字段
.template.base_notebook
指示的笔记本main
是任务笔记本。此笔记本应位于由deploy.yml
中的.metadata
和.template.base_notebook
字段指定的工作区/Shared/my-etl-job/<my_version_number>/main
中。版本号<my_version_number>
将在cli命令中指定。 - 在
/Shared/my-etl-job/<my_version_number>/notebook_name1
和/Shared/my-etl-job/<my_version_number>/notebook_name2
下提供两个临时笔记本。这允许主任务执行嵌套的笔记本,例如
notebook_path_1 = dbutils.widgets.get("EPHEMERAL_NOTEBOOK_1")
dbutils.notebook.run(notebook_path_1)
通过运行以下命令创建展开:
$ dbloy apply --deploy-yml deploy.yml --configmap-yml configmap.yml --version <my_version_number>