エクスポーター¶
Denodo Scheduler では、新しいカスタムエクスポーターを作成できます。
実装するインターフェイスの中には、必須なものと任意のものがあります。カスタムエクスポーターが実装できるインターフェイスの一覧を以下に示します。
com.denodo.scheduler.api.exporter.Exporter
com.denodo.scheduler.api.exporter.ExporterWithContext
com.denodo.scheduler.api.exporter.SchedulerExporter
com.denodo.scheduler.api.exporter.SchedulerExporterExtended
com.denodo.scheduler.api.exporter.batch.ExporterBatch
com.denodo.commons.schema.ISchema
新しい エクスポーター を作成するには、インターフェイス com.denodo.scheduler.api.exporter.Exporter
を実装する必要があります。このインターフェイスには、以下のメソッドがあります。
init
: エクスポーターを初期化します。オプションで、データのターゲット (ある場合) が到達可能で正しく構成されているかどうかをテストします。export
: Scheduler がドキュメントのエクスポートを実行するために呼び出すメソッド。getName
: Scheduler が エクスポーター の名前を取得するために呼び出すメソッド。
このインターフェイスを継承したものが、 com.denodo.scheduler.api.exporter.ExporterWithContext
インターフェイスであり、新しい形式の export
メソッドを使用することで、(エクスポート対象のドキュメントに加えて) ドキュメントを作成したクエリとそのパラメータを含むコンテキスト情報を受け取れます。このメソッドの目的は、エクスポート対象のドキュメントを抽出した最終クエリ (この場合、パラメータ化されたクエリ) を特定する手段を提供することにあります。
com.denodo.scheduler.api.exporter.Exporter
と com.denodo.scheduler.api.exporter.ExporterWithContext
のどちらかを選んで実装する必要があります。
また、 com.denodo.scheduler.api.exporter.SchedulerExporter
インターフェイスを実装することで、ジョブの実行時間 (再試行を必要とするジョブが再試行前に最初に実行された時間)、ジョブの再試行回数、および再試行の実行時間に関する情報を提供できます。このインターフェイスには以下のメソッドがあります。
open
: エクスポーターが必要とするリソースを初期化し、実行されたジョブに関する実行時の情報を取得します。close
: エクスポーターによって開かれたリソースを閉じて、必要な場合は一連のリソースを返します。たとえば、以下のコードスニペットが示すように、エクスポーターによって生成されたファイルのパスを返すことができます。その後、ハンドラーでそれらのリソースを取得できます。
Collection<ExporterResource> resources = new LinkedHashSet<ExporterResource>();
resources.add(new DefaultExporterResource(outputPath));
return resources;
両方のメソッドでスローされた例外は、ジョブレポートに表示されます。
このインターフェイスは、インターフェイス com.denodo.scheduler.api.exporter.SchedulerExporterExtended
によって拡張され、以下の 2 つの新しいメソッドを提供します。
isOpen
: エクスポーターが正常に開かれていて、まだ閉じられてはいない場合に true を返します。isClosed
: エクスポーターが一度も開かれていないか、すでに閉じられている場合に true を返します。閉じられたエクスポーターは、エクスポートする新しいドキュメントを Scheduler から受信しませんが、他のエクスポーターが受信します。このように、エクスポーターはopen
メソッドに失敗するとエクスポートするドキュメントを受信しないため、結果としてパフォーマンスが向上します。
CSV エクスポーターは、エクスポートされたファイルを 1 回だけ開き、すべてを書き込んでから閉じるために、このインターフェイスを実装します。JDBC エクスポーターは、データベースへのコネクションを 1 回だけ開いて、テーブルコンテンツを削除し (そのように構成されている場合)、エクスポートされたタプルを挿入してコネクションを閉じるためにこのインターフェイスを実装します (絶対にロールバックしないように構成されている場合は、「 エクスポーターセクション 」のセクションを参照)。新しいユーザー定義のエクスポーターもこのインターフェイスを実装することができます。
JDBC エクスポーターは、インターフェイス com.denodo.scheduler.api.exporter.batch.ExporterBatch
を実装します。このインターフェイスには、以下のメソッドが 1 つ定義されています。
getBatchSize
: エクスポーターに構成されたバッチサイズを返します (「 エクスポーターセクション 」を参照)。
ユーザー定義のエクスポーターもこのインターフェイスを実装できます。 ExporterBatch
を実装すると、エクスポーターの export
メソッドを呼び出すたびに受信するドキュメントの数を構成できます。 ExporterBatch
を実装するカスタムエクスポーターでは、バッチサイズを指定するための構成パラメータを定義することをお勧めします。そうすれば、ユーザーはエクスポーターのバッチサイズをグラフィカルツールを使用して構成できます。 ExporterBatch
を実装しない場合、デフォルトのバッチサイズは 200 です。
カスタムエクスポーターも、以下のメソッドを 1 つ定義するインターフェイス com.denodo.commons.schema.ISchema
を実装できます。
setSchema(com.denodo.commons.schema.Schema schema)
: Scheduler サーバーがエクスポートするデータのスキーマをエクスポーターに提供します。このメソッドは、SchedulerExporter
のopen
メソッドが呼び出される前に、Scheduler サーバーによって呼び出されるため、ISchema
とSchedulerExporter
を実装しているエクスポーターは、エクスポーターに必要なリソースを初期化する前に、エクスポートされたデータのスキーマを認識できます (たとえば、DB でテーブルを作成する前)。
詳細については「 Scheduler API の Javadoc 」を、エクスポーターを作成する例については「 <DENODO_HOME>/samples/scheduler/exporter-api
」を参照してください。