Databricks Executor

每次收到事件时,Databricks执行器都会启动Databricks作业。您可以基于notebooks或JAR运行作业。

使用Databricks执行器作为事件流的一部分启动Databricks作业。您可以以任何逻辑方式使用执行程序,例如在Hadoop FS,MapR FS或Amazon S3目标端关闭文件后运行Databricks作业。

请注意,Databricks执行器在外部系统中启动作业。它不会监视作业或等待其完成。成功执行作业后,执行器即可进行其他处理。

在使用Databricks执行器之前,请执行必要的先决条件。

配置执行器时,可以指定集群基本URL,作业类型,作业ID和用户凭据。您可以选择配置作业参数和安全性,例如HTTP代理和SSL/TLS详细信息。

您可以将执行器配置为为另一个事件流生成事件。有关数据流触发器和事件框架的更多信息,请参见数据流触发器概述。

先决条件

在运行启动Databricks上的作业的Databricks执行程序管道之前,请在Databricks中执行以下任务:

  1. 创建作业。

    Databricks执行程序可以基于notebooks或JAR开始作业。

  2. (可选)将作业配置为允许并发运行。

    默认情况下,Databricks不允许同时运行一个作业的多个实例。默认情况下,如果Databricks执行器快速连续接收到多个事件,它将启动作业的多个实例,但是Databricks将这些实例排队并逐个运行它们。

    要启用并行处理,请在Databricks中将作业配置为允许并发运行。您可以通过使用max_concurrent_runs参数的Databricks API或使用Jobs > Advanced菜单和“Maximum Concurrent Runs”属性通过UI配置最大并行运行数。

  3. 保存作业并记下作业ID。

    提交作业时,Databricks会生成一个作业ID。配置Databricks执行器时,请使用作业ID。

事件生成

Databricks执行器可以生成可在事件流中使用的事件。启用事件生成后,执行程序每次启动Databricks作业时都会生成事件。

Databricks执行器事件可以任何逻辑方式使用。例如:

  • 使用电子邮件执行程序在收到事件后发送自定义电子邮件。

    有关示例,请参阅案例研究:发送电子邮件。

  • 具有用于存储事件信息的目标端。

    有关示例,请参阅案例研究:事件存储。

由于Databricks执行器事件包括每个已启动作业的运行ID,因此您可能会生成事件以保留运行ID的日志。

有关数据流触发器和事件框架的更多信息,请参见数据流触发器概述。

事件记录

由Databricks执行器生成的事件记录具有以下与事件相关的记录头属性。记录头属性存储为字符串值:

记录头属性 描述
sdc.event.type 事件类型。使用以下类型:

  • AppSubmittedEvent-当执行程序启动Databricks作业时生成。
sdc.event.version 整数,指示事件记录类型的版本。
sdc.event.creation_timestamp 阶段创建事件的时间戳记。
由Databricks执行器生成的事件记录具有以下字段:

事件字段名称 描述
app_id Databricks作业的运行ID。

监控方式

Data Collector不监视Databricks作业。使用常规的集群监控器应用程序查看作业的状态。

由Databricks执行器启动的作业将使用阶段中指定的作业ID进行显示。所有作业实例的作业ID均相同。您可以在Data Collector日志中找到特定实例的运行ID 。

Databricks执行器还将作业的运行ID写入事件记录。要保留所有运行ID的记录,请启用该阶段的事件生成。

配置Databricks执行器

配置一个Databricks执行器,使其在每次执行程序收到事件记录时启动一个Databricks作业。

  1. 在“Properties”面板的“General选项卡上,配置以下属性:
    一般属性 描述
    Name 阶段名。
    Description 可选说明。
    Stage Library 您要使用的库版本。
    Produce Events 发生事件时生成事件记录。用于事件处理。
    Required Fields 必须包含用于将记录传递到阶段的记录的数据的字段。

    提示:您可能包括阶段使用的字段。

    根据为管道配置的错误处理,处理不包括所有必填字段的记录。

    Preconditions 必须评估为TRUE的条件才能使记录进入处理阶段。单击添加以创建其他前提条件。

    根据为该阶段配置的错误处理,处理不满足所有前提条件的记录。

  2. 在“Job选项卡上,配置以下属性:
    作业属性 描述
    Cluster Base URL 您公司的Databricks URL。URL使用以下格式:

    https://<your domain>.cloud.databricks.com
    Use Proxy 启用使用HTTP代理连接到系统。
    Job Type 要运行的作业类型:Notebook或JAR。
    Job ID 提交作业后,Databricks生成的作业ID,如先决条件中所述。
    Parameters 传递给作业的参数。完全按照预期的顺序输入参数。执行程序不验证参数。

    您可以在作业参数中使用表达语言。例如,在对Amazon S3对象执行后处理时,您可以使用以下表达式从事件记录中检索对象键名称:

    ${record:field('/objectKey')}
  3. 在“Credentials选项卡上,配置以下属性:
    凭据属性 描述
    Credential Type 用于连接到Databricks的凭据类型:Username/Password或Token。
    Username Databricks用户名。
    Password 帐户密码。

    提示: 要保护敏感信息(例如用户名和密码),可以使用 运行时资源或凭据存储。
    Token 帐户的个人访问令牌。
  4. 要使用HTTP代理,请在“Proxy选项卡上,配置以下属性:
    HTTP代理属性 描述
    Proxy URI 代理URI。
    Username 代理用户名。
    Password 代理密码。

    提示: 要保护敏感信息(例如用户名和密码),可以使用 运行时资源或凭据存储。
  5. 要使用SSL/TLS,请在“TLS”选项卡上配置以下属性:
    TLS属性 描述
    Use TLS 启用TLS的使用。
    Keystore File 密钥库文件的路径。输入文件的绝对路径或相对于Data Collector资源目录$SDC_RESOURCES的路径。

    有关环境变量的更多信息,请参阅《 Data Collector环境配置》。

    默认情况下,不使用任何密钥库。

    Keystore Type 要使用的密钥库的类型。使用以下类型之一:

    • Java Keystore File (JKS)
    • PKCS #12 (p12 file)

    默认值为Java Keystore File (JKS)。

    Keystore Password 密钥库文件的密码。密码是可选的,但建议使用。

    提示:要保护敏感信息(例如密码),可以使用运行时资源或凭据存储。
    Keystore Key Algorithm 用于管理密钥库的算法。

    默认值为 SunX509

    Truststore File 信任库文件的路径。输入文件的绝对路径或相对于Data Collector资源目录$SDC_RESOURCES的路径。

    有关环境变量的更多信息,请参阅《Data Collector环境配置》。

    默认情况下,不使用任何信任库。

    Truststore Type 要使用的信任库的类型。使用以下类型之一:

    • Java Keystore File (JKS)
    • PKCS #12 (p12 file)

    默认值为Java Keystore File (JKS)。

    Truststore Password 信任库文件的密码。密码是可选的,但建议使用。

    提示:要保护敏感信息(例如密码),可以使用运行时资源或凭据存储。
    Truststore Trust Algorithm 用于管理信任库的算法。

    默认值为SunX509

    Use Default Protocols 确定要使用的传输层安全性(TLS)协议。默认协议是TLSv1.2。要使用其他协议,请清除此选项。
    Transport Protocols 要使用的TLS协议。要使用默认TLSv1.2以外的协议,请单击“添加”图标并输入协议名称。您可以使用简单或批量编辑模式来添加协议。

    注意:较旧的协议不如TLSv1.2安全。
    Use Default Cipher Suites 对SSL/TLS握手使用默认的密码套件。要使用其他密码套件,请清除此选项。
    Cipher Suites 要使用的密码套件。要使用不属于默认密码集的密码套件,请单击“添加”图标并输入密码套件的名称。您可以使用简单或批量编辑模式来添加密码套件。

    输入要使用的其他密码套件的Java Secure Socket Extension (JSSE)名称。