FileName属性の使用方法は、オペレータの種類、オペレーティング システム、およびファイルのある場所がローカルのファイル システムかHadoopの分散ファイル システムかによって異なります。 FileNameを含む従来のDataConnector属性は、HDFS APIインターフェース経由でHadoopでインターフェースする場合に使用し、TDCHを介してHadoopでインターフェースする場合には使用しません。 DataConnectorのHadoopインターフェースの詳細については、Hadoopのファイルとテーブルの処理を参照してください。
- DataConnector Producerオペレータ
DataConnectorオペレータをプロデューサとして使用してローカル ファイル システムのファイルからデータを読み取る際に、名前付きUNIX OSディレクトリまたはz/OS区分データセット(PDSまたはPDSE)内で一致するすべてのファイルまたはメンバーを処理する場合、ワイルドカード文字(*)をFileName属性で使用できます。DataConnectorオペレータをプロデューサとして使用してHDFS APIインターフェース経由でHadoopファイルを読み取る場合は、UNIXスタイルの“egrep"のワイルドカード パターンもサポートされます。
オペレーティング システムに応じて以下の条件も適用されます。
- UNIXシステムの場合、FileName属性は255バイトまでです。 FileNameは、ファイルの完全パス名またはディレクトリ内のファイルの名前のいずれかです。 ただし、ディレクトリが任意のDirectoryPath属性で定義されていない場合、filenameはデフォルト ディレクトリにあることが想定されます。 例については、このセクションのテーブルを参照してください。
- z/OSシステムの場合、FileNameではデータ ファイルの完全修飾データセット名を指定できます。これには、データセットがPDSまたはPDSEの場合はメンバー名、PDSまたはPDSEスクリプト ライブラリのメンバー名、または'DD:<ddname>'が含まれます。 メンバー名がFileNameに対してのみ指定されている場合、メンバーを含む(PDSまたはPDSE)データセット名をDirectoryPath属性で指定する必要があります。 例については、このセクションのテーブルを参照してください。
- DataConnector Consumerオペレータ
DataConnectorオペレータをコンシューマとして使用している場合、FileName属性は完全なファイル指定となり、FileNameにはワイルドカード文字(*)を含めることはできません。
UNIXシステムでパス名を指定しない場合、FileNameはデフォルト ディレクトリにあることが想定されます。 例については、このセクションのテーブルを参照してください。
HDFS APIインターフェース経由で、FileName値が完全に修飾されていないファイルをHadoop分散ファイル システムに書き込む場合、ファイルは、ユーザーがHadoopUser属性で指定したディレクトリに作成されます。
複数インスタンスでのファイルへの書き込み:
Consumerオペレータは、複数インスタンスで複数ファイルを書き込むことができます。 複数のインスタンスを指定すると、出力が複数のファイルにわたります。 各ファイルのレコードの分散が統合されることはありません。 各ファイルのレコード数を(ほぼ)同じにする場合は、-Cコマンド ライン オプションを使用します。これにより、 Consumerオペレータへのロー数が必然的にラウンド ロビン形式になります。
出力ファイルを指定できるメソッドは2つあります。
- FileList属性を使用し、FileListファイルで各ファイルに明示的に名前を指定します。
- DataConnectorオペレータが自動的にファイル名を生成できるようにします。
ファイル名が自動的に作成される場合は、次のプロシージャが使用されます。
UNIXファイル名
ファイル名は、ダッシュおよび1から始まる数字を追加して作成され、それ以降は1ずつ増えます。 例えば、2つのインスタンスを持つファイル名「aa」は、次のように2つのファイルを作成します。
– aa-1
– aa-2
ZIPおよびGZIPファイル名
ZIPおよびGZIPファイルが作成される場合の名前は、ファイルタイプの拡張子を保持する必要があるため、UNIXファイル名と若干異なります。 上の例でファイル名「aa.gz」/「aa.zip」および2つのインスタンスを使用すると、次の2つのファイルが作成されます。
– aa-1.gz/aa-1.zip
– aa-2.gz/aa-2.zip
Z/OSデータセット
z/OSでは、連続して「dd-names」を生成することによる複数の書き込み機能が有効になっています。この機能は、連続するPDSメンバー名を生成するためにPDS/PDSEデータセット構文式を使用することもサポートしています。
受け入れられる形式は2つあります。
– DD-NAME FORMAT: { DD:xxx }
– DATASET FORMAT: { //'dataset-name(member-name)' }
dd-name (xxx)および(member-name)はテンプレートとして使用されます。 dd-nameまたはメンバー名は0~8文字で指定できます。
文字数が(0)場合は、次のように順番に生成されます。
– "D0000001"
– "D0000002"
など。( ... )
10進数値の最大数は常に連続するゼロで生成されます。
指定した文字数が必要な桁数よりも多い場合、桁数は拡張され、(x)文字を置き換えます(x = 必要数 - 利用可能数)。
指定した文字数が必要な桁数よりも少ない場合、10進数値は連続したゼロで拡張され、どのような場合でもdd-nameやメンバー名が8文字で構成されるようになります。
DD-NAMEの例
2個のインスタンスを持つゼロ文字「DD:」:
– "DD:D0000001"
– "DD:D0000002"
10個のインスタンスを持つ2文字の"DD:XX":
– "DD:XX000001"
– "DD:XX000002"
– "DD:XX000003"
– "DD:XX000004"
– "DD:XX000005"
– "DD:XX000006"
– "DD:XX000007"
– "DD:XX000008"
– "DD:XX000009"
– "DD:XX000010"
5個のインスタンスを持つ英文字の「DD:XXXXXXXX」:
– "DD:XXXXXXX1"
– "DD:XXXXXXX2"
– "DD:XXXXXXX3"
– "DD:XXXXXXX4"
– "DD:XXXXXXX5"
10個のインスタンスを持つ英文字の「DD:XXXXXXXX」:
– "DD:XXXXXX01"
– "DD:XXXXXX02"
– "DD:XXXXXX03"
– "DD:XXXXXX04"
– "DD:XXXXXX05"
– "DD:XXXXXX06"
– "DD:XXXXXX07"
– "DD:XXXXXX08"
– "DD:XXXXXX09"
– "DD:XXXXXX10"
データセット メンバー名の例
2個のインスタンスを持つゼロ文字の「//'MYDSN()'」:
– "//'MYDSN(D0000001)'"
– "//'MYDSN(D0000002)'"
10個のインスタンスを持つ2文字の「//'MYDSN(XX)'」:
– "//'MYDSN(XX000001)'"
– "//'MYDSN(XX000002)'"
– "//'MYDSN(XX000003)'"
– "//'MYDSN(XX000004)'"
– "//'MYDSN(XX000005)'"
– "//'MYDSN(XX000006)'"
– "//'MYDSN(XX000007)'"
– "//'MYDSN(XX000008)'"
– "//'MYDSN(XX000009)'"
– "//'MYDSN(XX000010)'"
5個のインスタンスを持つ8文字の「//'MYDSN(XXXXXXXX)'」:
– "//'MYDSN(XXXXXXX1)'"
– "//'MYDSN(XXXXXXX2)'"
– "//'MYDSN(XXXXXXX3)'"
– "//'MYDSN(XXXXXXX4)'"
– "//'MYDSN(XXXXXXX5)'"
10個のインスタンスを持つ8文字の「//'MYDSN(XXXXXXXX)'」:
– "//'MYDSN(XXXXXX01)'"
– "//'MYDSN(XXXXXX02)'"
– "//'MYDSN(XXXXXX03)'"
– "//'MYDSN(XXXXXX04)'"
– "//'MYDSN(XXXXXX05)'"
– "//'MYDSN(XXXXXX06)'"
– "//'MYDSN(XXXXXX07)'"
– "//'MYDSN(XXXXXX08)'"
– "//'MYDSN(XXXXXX09)'"
– "//'MYDSN(XXXXXX10)'"
- FileNameおよびFileList属性の結合
FileList属性はFileName属性の機能を拡張します。 FileList = ‘Y’を追加すると、FileNameによって識別されるファイルには、入力として処理されるまたは出力のコンテナとして使用されるファイルのリストが含まれることを示します。 FileNameファイル内で見つかったファイル名はフルパス指定であることが想定されます。 ディレクトリ名が含まれていない場合、ファイルは現在のディレクトリ内にあることが想定されます。 出力ファイルのフルパスを指定すると、複数のディレクトリまたはディスクにファイルを書き込むことができます。 DirectoryPath属性をこの機能と組み合わせて使用することはできません。
FileNameおよびFileList属性を出力の制御に使用する場合、指定されたファイル リストは定義されたコンシューマ インスタンスと同じ数のファイルを持つ必要があります。異なる場合、ターミナル エラーになります。 tbuild -Cオプションが使用されている場合、実行時に行はリストされたファイルにラウンド ロビン形式で配置されます。 オプションが使用されていない場合、行はリストされたファイルに均等に配置されない場合があります。
DataConnectorオペレータは、ネットワークに接続されたプラットフォーム上のASCII、およびメインフレーム接続のプラットフォーム上のEBCDICでエンコードされたFileListファイルをサポートします。
この機能はアーカイブ機能と結合できません。 (例えば、ArchiveDirectoryPath属性を定義することによって)アーカイブ機能の使用を試みると、ターミナル エラーになります。
- 出力ファイルのサイズの制限
DataConnectorのConsumerオペレータを使用して多数のレコードをディスクに書き込む場合、FileSizeMax属性を使用すると、非常に大きな1つのファイルではなく、管理しやすいサイズの複数のファイルにレコードを書き込むことができます。FileSizeMax属性は、出力ファイルをユーザー固有のサイズに制限します。サイズ制限に達すると、現在の出力ファイルが閉じられ、次のレコード セットは新しい出力ファイルに書き込まれます。
FileName属性で(filenameとして)指定したパス名に埋め込みパス名構文(UNIX OSの場合'/'、またはWindowsの場合'\')が含まれる場合、パス名はパス名全体として受け入れられます。 ただし、DirectoryPath属性が存在する場合、FileName属性は無視され、警告メッセージが発行されます。
FileListファイル名がHDFSに存在しない場合、Data Connectorはそれがローカルのファイルであると認識し、それに従って処理します。または、それがHDFSファイルである場合は、HDFSファイル システムから読み取られます。
次のテーブルにFileName属性の有効な構文の例を示します。
オペレーティング システム | 有効な構文 | 説明 |
---|---|---|
z/OS | FileName = '//''name.name(member)''' |
z/OS PDS DSN: Name.Name(Member) 構文規則:
|
FileName = '//''name.name''' |
z/OS DSN(シーケンシャル): Name.Name 構文規則:
|
|
FileName = 'DD:ddname' |
z/OS DSNは、JCL DD文名“ddname."で説明されています。 DD文が指定されていない場合、以下が発生します。
|
|
FileName = 'member' |
z/OS PDSメンバーはDirectoryPath属性で定義されたDSN内に置かれることが想定されます。 | |
UNIX | FileName = '/tmp/user/filename' |
UNIXパス名。 |
FileName = 'filename' |
DirectoryPath属性が定義されていない場合、filenameはデフォルト ディレクトリに配置されます。 | |
Windows | FileName = '\tmp\user-filename'
|
Windowsパス名。 |
FileName = 'filename' |
Windowsファイル名は、DirectoryPath属性で定義されたディレクトリにあることが想定されます。 DirectoryPathが定義されていない場合、filenameはデフォルト ディレクトリに配置されます。 |