Amazon AWS データ パイプラインの一部として、ステージングされていない 2 つの S3 データ ノードを入力として使用するハイブ アクティビティがあります。アクティビティに 2 つのスクリプト変数を設定し、それぞれが入力データ ノードを指すようにしたいのですが、正しい構文を取得できません。単一の入力では、次のように記述でき、問題なく動作します。
INPUT_FOO=#{input.directoryPath}
2 番目の入力を追加すると、以下のパイプライン定義でわかるように、入力の配列になっているため、それらを参照する方法の問題が発生します。基本的に、次のことを達成したいのですが、正しい構文がわかりません。
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'