apachespark的通用ETL管道框架
spark-etl的Python项目详细描述
概述
目标
spark_etl提供了一种独立于平台的构建spark应用程序的方法。在
收益
- 您的应用程序可以移动到不同的spark平台,而无需更改或很少更改。在
支撑平台
- 通过pyspark软件包实现本地spark。在
- 具有Livy接口的火花簇
- Oracle数据流
概念
应用
应用程序是spark工作的代码。它包含:
- 包含应用程序项的
main.py
文件 - 一个
manifest.json
文件,它指定应用程序的元数据。在 - 指定应用程序依赖关系的
requirements.txt
文件。在
例如,请参见examples/myapp。在
生成应用程序
要构建应用程序,请运行
./etl.py -a build --app-dir <app-dir> --build-dir <build-dir>
- 在
在<app_dir>
是应用程序所在的目录。在 - 在
<build-dir>
是要部署生成的目录- 您的构建实际上位于
<build-dir>/<version>
,其中<version>
由应用程序的清单文件指定
- 您的构建实际上位于
- 在
Build大部分与平台无关。如果打算使用oci数据流,则需要依赖软件包oci核心
在
应用程序条目签名
在应用程序的main.py
中,您应该有一个带有以下签名的main
函数:
spark
是spark session对象input_args
dict是用户在运行此作业时指定的参数。在sysops
是传递的系统选项,它是特定于平台的。在- 您的
main
函数的返回值将从作业提交者返回给调用者。在
例如,请参见here。在
部署人员
- spark_etl支持以下部署程序
spark_etl.vendors.local.LocalDeployer
spark_etl.deployers.HDFSDeployer
spark_etl.vendors.oracle.DataflowDeployer
etl.py
命令使用配置文件来决定使用哪个部署程序
作业提交人
- spark_etl支持以下作业提交程序
spark_etl.vendors.local.PySparkJobSubmitter
spark_etl.job_submitters.livy_job_submitter.LivyJobSubmitter
spark_etl.vendors.oracle.DataflowJobSubmitter
- 作业摘要器的
run
函数返回作业的main
函数的retrun值。在
etl.py
命令使用配置文件来决定要使用的作业提交者
使用etl.py
命令部署作业:(examples/etl.py
)
./etl.py -a deploy \
-c <config-filename> \
--build-dir <build-dir> \
--deploy-dir <deploy-dir>
-c <config-filename>
:此选项指定用于部署的配置文件--build-dir <build-dir>
:此选项指定在何处查找要部署的构建位--deolpy-dir <deploy-dir>
:此选项指定部署的目标
运行作业
./etl.py -a run \
-c <config-filename> \
--deploy-dir <deploy-dir> \
--version <version> \
--args <input-json-file>
-c <config-filename>
:此选项指定配置文件--build-dir <build-dir>
:此选项指定在何处查找要运行的构建位--version <version>
:此选项指定要运行的应用程序版本--args <input-json-file>
:作业的输入变量的可选参数。<input-json-file>
指向一个json文件,该文件的值将传递给input_args
参数中的job的main函数。如果缺少此选项,则在调用作业的main
函数时,input_args
将被设置为{}
。在- 它打印作业的
main
函数的返回值
示例
- Build, deploy and run in local spark
- Build, deploy and run in spark cluster
- Build, deploy and run in OCI Dataflow
- 项目
标签: