基于数据块的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.ymlconfigmap.yml包含作业规范。作业版本在<my_version_number>

中指定

工作流程

databricks workflow 来源:https://databricks.com/blog/2017/10/30/continuous-integration-continuous-delivery-databricks.html

example workflow

示例用法

有关使用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"

在本例中:

  • 数据块上的作业id289,由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>

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
无法在Netbeans 8.2 JDK8u231中创建java Maven项目(Web应用程序)   java如何以设定的时间间隔生成随机数?   java从socket和inputStream的慢速读取   spring SCORM:Java中基于Web的SCORM播放器   Java将函数传递给方法   java绑定通用服务及其实现和子类型   java如何在运行时从选择列表框中动态选择选项?爪哇硒   java Selenium WebDriver什么是“Selenium客户端和WebDriver语言绑定”   elasticsearch需要elasticsearch高级Java客户端更新ByQueryRequest API帮助   JAVA哈希表查找最大值   WSDL操作中的java soapAction属性为空   java访问封闭类或父类方法的一般方法   eclipse在java中运行带有SeleneTestCase的ANT。lang.NoClassDefFoundError   java Hazelcast不会在节点启动时填充ReplicatedMap   如何在Java中从excel中读取特定行?   html JAVA将本地时间(GMT+8)转换为UTC时间   java将自定义端点添加到Spring数据REST存储库中,并以大摇大摆的方式显示   java计算未来位置