0

私のデータ処理シナリオでは、「YY」年形式のソースデータパスがいくつかあります。

/ user / $ {user.name} / $ {YEAR} / $ {MONTH} / ${DAY}/一部のデータセットname_YY

YEARがすでにパスに存在しているときに、最後に「YY」を付けるのは悪い設計ですが、それは現在のシステムにあるものであり、しばらくの間変更する余裕はありません。

<datasets>
    <dataset name="hourlyds" frequency="${ds_frequency}"
        initial-instance="${ds_initial_instance}" timezone="${ds_timezone}">

        <uri-template>${baseFsURI}/${YEAR}/${MONTH}/${DAY}/alpha_${coord:formatTime(coord:actualTime(),'yy')}</uri-template>
        OR (tried one at a time)
        <uri-template>${baseFsURI}/${YEAR}/${MONTH}/${DAY}/alpha_${coord:formatTime(coord:nominalTime(),'yy')}</uri-template>

        <done-flag>${doneFlag}</done-flag>
    </dataset>
</datasets>

2つのELはいずれも機能しませんでした。データ名プレフィックスのないネストされていないEL式が1つでも失敗しました:

<uri-template>${baseFsURI}/${YEAR}/${MONTH}/${DAY}/${coord:nominalTime()}</uri-template>

次のエラーがスローされるたびに:

Error: E1004: Expression language evaluation error [Unable to evaluate :${baseFsURI}/${YEAR}/${MONTH}/${DAY}/${coord:nominalTime()}: ], java.lang.Exception: Unable to evaluate :${baseFsURI}/${YEAR}/${MONTH}/${DAY}/${coord:nominalTime()}:

データセットでこの「YY」形式を取得するにはどうすればよいですか?EL以外の方法でそこに到達しますか?

前もって感謝します、

ラウル

4

1 に答える 1

0

データセット要素に座標を配置することはできません。むしろ、テンプレート URL を使用して URL をフォーマットするときに、現在のタイムスタンプとの関係を記述するために入力イベントまたは出力イベントに存在します。

パス/user/${user.name}/${YEAR}/${MONTH}/${DAY}/some dataset name_YYはファイルまたはファイルを含むディレクトリですか?

ファイル自体の場合は、データセットを修正して削除しますsome dataset name_YY- Hadoop は ${DAY} フォルダーの入力をディレクトリとして解釈し、その中のすべてのファイルを入力として使用します

それらがディレクトリであり、一度に ${DAY} フォルダーのみを処理しており、かつ${DAY} フォルダーに 1 つのディレクトリ (一部のデータセット YY) しか含まれていない場合は、アクションでワイルドカードを使用できます。

  <action>
    <workflow>
      <app-path>${wf_app_path}</app-path>
      <configuration>
          <property>
          <name>wfInput</name>
          <value>${coord:dataIn('input')}/*</value>
        </property>
        <property>
          <name>wfOutput</name>
          <value>${coord:dataOut('output')}</value>
        </property>
      </configuration>
    </workflow>
  </action>
于 2012-05-02T10:25:54.363 に答える