如何将 AWS Glue 作业的输出返回到调用 Step Function 工作流?

Tur*_*hro 5 amazon-web-services aws-step-functions aws-glue

AWS Step Functions 允许调用 AWS Glue 作业,如下所述:https : //docs.aws.amazon.com/step-functions/latest/dg/connect-glue.html

我想运行作业并(在将结果保存到 S3 之后)将作业期间产生的一些元数据(如行数或过滤行数)返回到 Step 函数流。

我们可以将参数从 Step 函数传递给 Glue 作业,如下所示:

              "RunGlueJob": {
                "Type": "Task",
                "Resource": "arn:aws:states:::glue:startJobRun.sync",
                "Parameters": {
                  "JobName": "MyJobName",
                  "Arguments": {
                    "--param1.$": "$.param1",
                    "--param2.$": "$.param2"
                  }
                },
                "Next": "NextState"
              },
Run Code Online (Sandbox Code Playgroud)

但是 Glue 作业如何将输出返回到 Step Function 工作流?我尝试从 (Scala) Glue 作业中的 main() 函数返回一个字符串,但它没有出现在返回到步骤函数流的 JSON 中:

{
      "AllocatedCapacity": 3,
      "Arguments": {
        "--param1.$": "$.param1",
        "--param2.$": "$.param2"
      },
      "Attempt": 0,
      "CompletedOn": 1570114802442,
      "ExecutionTime": 39,
      "GlueVersion": "0.9",
      "Id": "jr_some_id",
      "JobName": "MyJobName",
      "JobRunState": "SUCCEEDED",
      "LastModifiedOn": 1570114802442,
      "LogGroupName": "/aws-glue/jobs",
      "MaxCapacity": 3,
      "PredecessorRuns": [],
      "StartedOn": 1570114746138,
      "Timeout": 2880
    }
Run Code Online (Sandbox Code Playgroud)

我找不到任何关于此的文档,因此这可能根本不可能。但是,从 Lambdas 返回值工作得很好,并且在 Step 函数工作流中正常显示。

San*_*are 5

在此阶段,您无法从胶水作业中返回任何东西。根据定义,AWSglue预计将处理大量数据,因此预计输出也将是大量数据。

您可以将结果写入 dynamodb 或 s3 或任何其他存储,并在 AWS 步骤函数的下一步中使用 lambda 访问它

  • 谢谢。很明显,实际的 Glue 输出应该存储在其他地方,但是可能需要在后续任务中使用一些元数据(例如写入的行数),因此这是一种麻烦。 (3认同)