[Talend]tFileArchiveを利用してファイルを圧縮する

今回はTalendのコンポーネント「tFileArchive」を紹介したいと思います。
2018.10.11

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

こんにちは。DI部の大高です。

今回はTalendのコンポーネント「tFileArchive」を紹介したいと思います。

前提条件

Talendのバージョンは「Talend Open Studio for Big Data」の「Version 7.0.1」で検証しています。

tFileArchiveについて

「tFileArchive」を利用すると指定したファイルやディレクトリを圧縮することができます。

「tFileArchive」コンポーネントのTalend Helpページはこちらです。

tFileArchive

では、具体的に以下で解説していきます。

ジョブの説明

「tFileArchive」でファイル、ディレクトリを圧縮します。

サブジョブを3つ作成しており、「tFileArchive」の「アーカイブフォーマット」が上から順に「zip」、「gzip」、「tar.gz」に設定してあります。

圧縮対象ファイル

今回のサンプルファイルとして、以下のファイルを圧縮対象とします。

 C:\tmp\Sandbox\Components\tFileArchive\Files のディレクトリ

2018/10/11  10:01    <DIR>          .
2018/10/11  10:01    <DIR>          ..
2018/10/11  10:00       315,724,616 Sample1.csv
2018/10/11  10:00       315,724,616 Sample2.csv
2018/10/11  10:00       315,724,616 Sample3.csv
2018/10/11  10:00       315,724,616 Sample4.csv
2018/10/11  10:00       315,724,616 Sample5.csv

「tFileArchive」コンポーネントの設定

「tFileArchive」コンポーネントで圧縮形式毎にコンポーネント設定をしていきます。

zip形式

コンポーネント設定は以下としました。

ディレクトリー

zip圧縮の場合、圧縮対象はディレクトリになります。また、チェックを入れると「サブディレクトリ」を含めて圧縮可能です。

アーカイブファイル

アーカイブファイルに圧縮ファイルの出力先パスを設定しますが、その際に拡張子を自身で設定する必要があるので注意が必要です。出力先ディレクトリについては、存在しない場合でも「存在しない場合、ディレクトリを作成」にチェックを入れることで自動作成してくれます。

アーカイブフォーマット

ここでは「zip」を設定します。

圧縮レベル

「高速(圧縮しない)」、「標準」、「最適」の3つから選択が可能です。圧縮するファイルに依存するとは思いますが、今回のサンプルファイルで検証したところ、「標準」で66%、「最適」で68%の圧縮率でした。

すべてのファイル

圧縮対象については、基本的にはディレクトリ指定となりますが「すべてのファイル」のチェックを外すと、更にファイルマスクで圧縮対象を指定することができます。

エンコーディング

zipファイルのエンコーディングを指定することができます。プルダウンには「ISO-8859-15」、「UTF-8」、「CUSTOM」があり、「CUSTOM」を選択すればエンコーディングを文字列で自由に指定することができます。

既存のアーカイブを上書きする

チェックを入れると既存のアーカイブファイルに上書きします。チェックしない場合には、既存のファイルが存在するとエラーになります。

暗号化ファイル

zipファイル場合には「暗号化ファイル」にチェックを入れることで暗号化も可能です。

ZIP64モード

通常のZIPフォーマットでは扱えない「ファイル数が65536ファイルを超える場合」か「ファイルサイズが4GBを超える場合」に利用すると良いようです。基本的には「ASNEEDED」に設定しておくとよいかと思います。

gzip形式

コンポーネント設定は以下としました。zipに比べるとオプションがシンプルとなっています。

ソースファイル

gzip形式の場合、圧縮対象はファイルになります。

アーカイブファイル

こちらはzip形式の設定と同じです。なおファイル名は「ソースファイル」のファイル名に「.gz」を付けたファイル名が推奨されており、違う場合には実行時にその旨のメッセージが表示されます。

アーカイブフォーマット

ここでは「gzip」を設定します。

圧縮レベル、既存のアーカイブを上書きする

これらはzip形式の設定と同じです。

tar.gz形式

コンポーネント設定は以下としました。こちらもzipに比べるとオプションがシンプルとなっています。

ディレクトリー、アーカイブファイル

こちらはzip形式の設定と同じです。

アーカイブフォーマット

ここでは「tar.gz」を設定します。

圧縮レベル、すべてのファイル、既存のアーカイブを上書きする

これもzip形式の設定と同じです。

実行結果

設定は以上です。実際にこのジョブを実行すると以下のように出力されます。

C:\tmp\Sandbox\Components\tFileArchive>dir
 ドライブ C のボリューム ラベルがありません。
 ボリューム シリアル番号は EC53-D1E9 です

 C:\tmp\Sandbox\Components\tFileArchive のディレクトリ

2018/10/11  11:43    <DIR>          .
2018/10/11  11:43    <DIR>          ..
2018/10/11  10:08       109,523,936 archive.Sample1.gz
2018/10/11  11:44       547,618,301 archive.tar.gz
2018/10/11  11:43       547,620,186 archive.zip

それぞれの形式でファイルが圧縮されました!

まとめ

以上、「tFileArchive」コンポーネントの紹介でした。

データ分析基盤においては、gz形式に圧縮してからRedshiftへCOPYすることが多いと思うので個人的には割と今後良く使うかなと思います。

それでは。