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_argsdict是用户在运行此作业时指定的参数。在
  • sysops是传递的系统选项,它是特定于平台的。在
  • 您的main函数的返回值将从作业提交者返回给调用者。在
^{pr2}$

例如,请参见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函数的返回值

示例

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

推荐PyPI第三方库


热门话题
如何用java表示这个数学函数的算法   Java/Stream帮助:仅使用streams将嵌套的映射列表转换为映射   使用Selenium连接到数据库时发生java未知主机异常   java如何了解jvm内存使用:“堆内存”和“堆外内存”   java Oracle BI报告导入模板   java如何使用Spring将xml转换为bean?   java线程。join()以保证执行顺序   java从THINGSPEAK到ANDROID应用程序获取JSON数据   使用Java的stanford库中的异常   java正确使用来自其他类文件的方法   如果集合中的元素类型为接口类型,如何填充集合?(爪哇)   记录java。util。记录器创建的文件超过了应有的数量   类Java对象uniq值   尝试调用无法应用于()的方法时出现java错误