AWS Data Pipeline 不再向新客户提供。的现有客户 AWS Data Pipeline 可以继续照常使用该服务。了解更多
本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
HiveActivity
在 EMR 集群上运行 Hive 查询。HiveActivity 使您能够更轻松地设置 Amazon EMR 活动,并且将自动基于来自 Amazon S3 或 Amazon RDS 的输入数据创建 Hive 表。您只需要指定要在源数据上运行的 HiveQL 即可。 AWS Data Pipeline 根据HiveActivity对象中的输入字段自动创建带有${input1}${input2}、等的 Hive 表。
对于 Amazon S3 输入,dataFormat 字段用于创建 Hive 列名。
对于 MySQL(Amazon RDS)输入,SQL 查询的列名用于创建 Hive 列名。
注意
此活动使用 Hive CSV Serde
示例
以下是该对象类型的示例。该对象引用您在同一管道定义文件中定义的三个其他对象。MySchedule 为 Schedule 对象,MyS3Input 和 MyS3Output 为数据节点对象。
{ "name" : "ProcessLogData", "id" : "MyHiveActivity", "type" : "HiveActivity", "schedule" : { "ref": "MySchedule" }, "hiveScript" : "INSERT OVERWRITE TABLE ${output1} select host,user,time,request,status,size from ${input1};", "input" : { "ref": "MyS3Input" }, "output" : { "ref": "MyS3Output" }, "runsOn" : { "ref": "MyEmrCluster" } }
语法
| 对象调用字段 | 描述 | 槽类型 |
|---|---|---|
| schedule | 该对象在计划间隔的执行中调用。指定对另一个对象的计划引用,以便设置该对象的依赖项执行顺序。您可以通过在对象上显式设置时间表来满足此要求,例如,指定 “schedule”: {"ref”: "DefaultSchedule“}。在大多数情况下,最好将计划引用放在默认管道对象上,以便所有对象继承该计划。或者,如果管道具有一个计划树 (计划位于主计划中),您可以创建具有计划引用的父对象。有关示例可选计划配置的更多信息,请参阅 https://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-object-schedule.html。 | 参考对象,例如 “日程安排”:{“ref”:” myScheduleId “} |
| 所需的组 (下列选项之一是必需的) | 描述 | 槽类型 |
|---|---|---|
| hiveScript | 要运行的 Hive 脚本。 | 字符串 |
| scriptUri | 要运行 Hive 脚本的位置 (例如,s3://scriptLocation)。 | 字符串 |
| 所需的组 | 描述 | 槽类型 |
|---|---|---|
| runsOn | 在其中运行该 HiveActivity 的 EMR 集群。 |
参考对象,例如 “runson”:{“ref”:” myEmrCluster Id "} |
| workerGroup | 工作线程组。这可用于路由任务。如果您提供 runsOn 值并且存在 workerGroup,则将忽略 workerGroup |
字符串 |
| input | 输入数据源。 | 参考对象,例如 “输入”:{"ref”:” myDataNode Id "} |
| output | 输出数据源。 | 参考对象,例如 “输出”:{"ref”:” myDataNode Id "} |
| 可选字段 | 描述 | 槽类型 |
|---|---|---|
| attemptStatus | 来自远程活动的最近报告的状态。 | 字符串 |
| attemptTimeout | 远程工作完成的超时时间。如果设置此字段,则可能会重试未在设定的开始时间内完成的远程活动。 | 周期 |
| dependsOn | 指定与另一个可运行对象的依赖关系。 | 参考对象,例如 “dependSon”:{“ref”:” myActivityId “} |
| failureAndRerunMode | 描述依赖项失败或重新运行时的使用者节点行为。 | 枚举 |
| hadoopQueue | 将在其上提交作业的 Hadoop 计划程序队列名。 | 字符串 |
| lateAfterTimeout | 管道启动后经过的时间,在此时间内,对象必须完成。仅当计划类型未设置为 ondemand 时才会触发。 |
周期 |
| maxActiveInstances | 组件的并发活动实例的最大数量。重新运行不计入活动实例数中。 | 整数 |
| maximumRetries | 失败后的最大重试次数。 | 整数 |
| onFail | 当前对象失败时要运行的操作。 | 参考对象,例如 “onFail”:{“ref”:” myActionId “} |
| onLateAction | 在尚未计划对象或对象仍未完成的情况下将触发的操作。 | 引用对象,例如 onLateAction ““: {" ref”:” myActionId “} |
| onSuccess | 当前对象成功时要运行的操作。 | 参考对象,例如 “onSuccess”:{“ref”:” myActionId “} |
| parent | 槽将继承自的当前对象的父级。 | 引用对象,例如 “父对象”:{"ref”:” myBaseObject Id "} |
| pipelineLogUri | 用于上传管道日志的 S3 URI,例如,“3: BucketName //Key/”)。 | 字符串 |
| postActivityTaskConfig的 | 要运行的活动后配置脚本。这由 Amazon S3 中 Shell 脚本的 URI 和参数列表组成。 | 参考对象,例如 “postActivityTaskConfig”: {“ref”:” myShellScript ConfigId “} |
| preActivityTaskConfig的 | 要运行的活动前配置脚本。这由 Amazon S3 中 Shell 脚本的 URI 和参数列表组成。 | 参考对象,例如 “preActivityTaskConfig”: {“ref”:” myShellScript ConfigId “} |
| precondition | (可选) 定义先决条件。在满足所有先决条件之前,数据节点不会标记为“READY”。 | 参考对象,例如 “前提条件”:{“ref”:” myPreconditionId “} |
| reportProgressTimeout | 远程工作对 reportProgress 的连续调用的超时时间。如果设置此字段,则未报告指定时段的进度的远程活动可能会被视为停滞且已重试。 |
周期 |
| resizeClusterBefore正在跑步 | 在执行此活动前,重新调整集群的大小,以适应指定为输入或输出的 DynamoDB 数据节点。注意如果您的活动使用 |
布尔值 |
| resizeClusterMax实例 | 调整大小算法可以请求的最大实例数的限制。 | 整数 |
| retryDelay | 两次重试之间的超时时间。 | 周期 |
| scheduleType | 计划类型允许您指定应在间隔的结尾还是开头计划您管道定义中的对象。时间序列风格计划表示在每次间隔的结尾计划实例,而 Cron 风格计划表示应在每次间隔的开头计划实例。按需计划让您可以在每次激活时运行一次管道。这意味着,您不需要克隆或重新创建管道以再次运行它。如果您使用按需计划,则必须在默认对象中指定它,并且必须是在管道中为对象指定的唯一 scheduleType。要使用按需管道,您只需为后续的每次运行调用该 ActivatePipeline 操作即可。值包括:cron、ondemand 和 timeseries。 | 枚举 |
| scriptVariable | 指定在运行脚本时要传递给 Hive 的 Amazon EMR 的脚本变量。例如,以下示例脚本变量将 SAMPLE 和 FILTER_DATE 变量传递到 Hive:SAMPLE=s3://elasticmapreduce/samples/hive-ads 和
FILTER_DATE=#{format(@scheduledStartTime,'YYYY-MM-dd')}%。此字段接受多个值,可与 script 和 scriptUri 字段结合使用。此外,scriptVariable 将起作用,不管 stage 设置为 true 还是 false。在使用
AWS Data Pipeline 表达式和函数将动态值发送到 Hive 时,此字段特别有用。 |
字符串 |
| stage | 确定是在运行脚本之前还是之后启用暂存。不可对 Hive 11 使用,因此,请使用 Amazon EMR AMI 版本 3.2.0 或更高版本。 | 布尔值 |
| 运行时字段 | 描述 | 槽类型 |
|---|---|---|
| @activeInstances | 当前计划的有效实例对象的列表。 | 参考对象,例如 “ActiveInstances”:{"ref”:” myRunnableObject Id "} |
| @actualEndTime | 该对象的执行完成时间。 | DateTime |
| @actualStartTime | 该对象的执行开始时间。 | DateTime |
| cancellationReason | 该对象被取消时显示的 cancellationReason。 | 字符串 |
| @cascadeFailedOn | 对象在其上失败的依赖项链的描述。 | 引用对象,例如 cascadeFailedOn ““: {" ref”:” myRunnableObject Id "} |
| emrStepLog | 仅在尝试 EMR 活动时可用的 Amazon EMR 步骤日志。 | 字符串 |
| errorId | 该对象失败时显示的 errorId。 | 字符串 |
| errorMessage | 该对象失败时显示的 errorMessage。 | 字符串 |
| errorStackTrace | 该对象失败时显示的错误堆栈跟踪。 | 字符串 |
| @finishedTime | 该对象完成其执行的时间。 | DateTime |
| hadoopJobLog | 在尝试基于 EMR 的活动时可用的 Hadoop 任务日志。 | 字符串 |
| @healthStatus | 对象的运行状况,反映进入终止状态的上个对象实例成功还是失败。 | 字符串 |
| @healthStatusFromInstanceId | 进入终止状态的上个实例对象的 ID。 | 字符串 |
| @ T healthStatusUpdated ime | 上次更新运行状况的时间。 | DateTime |
| hostname | 已执行任务尝试的客户端的主机名。 | 字符串 |
| @lastDeactivatedTime | 上次停用该对象的时间。 | DateTime |
| @ T latestCompletedRun ime | 已完成执行的最新运行的时间。 | DateTime |
| @latestRunTime | 已计划执行的最新运行的时间。 | DateTime |
| @nextRunTime | 计划下次运行的时间。 | DateTime |
| reportProgressTime | 远程活动报告进度的最近时间。 | DateTime |
| @scheduledEndTime | 对象的计划结束时间。 | DateTime |
| @scheduledStartTime | 对象的计划开始时间。 | DateTime |
| @status | 该对象的状态。 | 字符串 |
| @version | 用来创建对象的管道版本。 | 字符串 |
| @waitingOn | 该对象在其上处于等待状态的依赖项列表的描述。 | 参考对象,例如 “waitingOn”:{"ref”:” myRunnableObject Id "} |
| 系统字段 | 描述 | 槽类型 |
|---|---|---|
| @error | 用于描述格式不正确的对象的错误消息。 | 字符串 |
| @pipelineId | 该对象所属的管道的 ID。 | 字符串 |
| @sphere | 对象的范围指明对象在生命周期中的位置:组件对象产生实例对象,后者执行尝试对象。 | 字符串 |