【问题标题】:AWS data pipeline activity with multiple inputs具有多个输入的 AWS 数据管道活动
【发布时间】:2015-06-05 23:16:27
【问题描述】:

作为 Amazon AWS 数据管道的一部分,我有一个使用两个未暂存的 S3 数据节点作为输入的配置单元活动。我想要的是能够在活动上设置两个脚本变量,每个变量都指向一个输入数据节点,但我无法正确使用语法。使用单个输入,我可以编写以下内容,并且可以正常工作:

INPUT_FOO=#{input.directoryPath}

当我添加第二个输入时,我遇到了如何引用它们的问题,因为它们现在是一个输入数组,正如您在下面的管道定义中看到的那样。本质上,我想实现以下目标,但无法弄清楚正确的语法:

INPUT_FOO=#{input[1].directoryPath}
INPUT_BAR=#{input[2].directoryPath}

这是管道定义的活动部分:

{
  "id": "ActivityId_7u1sR",
  "input": [
    {
      "ref": "DataNodeId_iYnxf"
    },
    {
      "ref": "DataNodeId_162Ka"
    }
  ],
  "schedule": {
    "ref": "DefaultSchedule"
  },
  "scriptUri": "#{myS3ScriptLocation}calculate-results.q",
  "name": "Perform Calculations",
  "runsOn": {
    "ref": "EmrClusterId_jHeiV"
  },
  "scriptVariable": [
    "INPUT_SOURCE1=#{input[1].directoryPath}",
    "OUTPUT=#{output.directoryPath}Results/",
    "INPUT_SOURCE2=#{input[2].directoryPath}"
  ],
  "output": {
    "ref": "DataNodeId_2jY6v"
  },
  "type": "HiveActivity",
  "stage": "false"
}

我计划不暂存表并在 hive 脚本中创建表,以便更轻松地单独运行每个 Hive 活动以及在管道本身中运行。

这是我在使用数组语法时看到的错误:

Unable to resolve input[1].directoryPath for object ActivityId_7u1sR'

【问题讨论】:

  • 正确的语法是input.directoryPath[1]吗?我不确定.q 文件是什么。我认为这可能取决于您使用该语言的索引方式
  • 我尝试在 directoryPath 级别上建立索引,但架构师编辑器将其标记为错误,因此我不清楚索引语法如何在数据管道变量中工作(如果可能的话)。此外,q 文件是 Hive 脚本。
  • 好的,我想我明白你现在想要做什么了。为什么不或不能将这两个源作为直接输入添加到 HiveActivity?编辑:如果 2 个数据源在 S3 上,您也应该将它们的目录显式输入到变量中
  • Data Pipeline 不支持此功能。但我认为 DataPipeline 最近增加了对数组表达式评估的支持。您可能想联系团队/论坛喊出将其添加到他们的文档中。同时,尝试使用'INPUT_SOURCE = input.directoryPath',它可能会将数据作为数组传递给您。然后在你的脚本中解析它。很抱歉挥手了很多次。
  • 我联系了 AWS 支持,后者联系了数据管道服务团队,他们说目前不支持此场景,但他们为其添加了功能请求。感谢您对这个问题的所有意见。

标签: variables amazon-web-services input hive amazon-data-pipeline


【解决方案1】:

目前不支持此场景,但添加了功能请求以在将来支持它。

【讨论】:

  • 此功能的任何状态已添加,现在可用吗?
  • 看起来 AWS 还没有解决这个问题。我们需要一些转变来实现它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-06-01
  • 1970-01-01
  • 2019-03-18
  • 1970-01-01
  • 2022-10-25
  • 2022-07-30
  • 1970-01-01
相关资源
最近更新 更多