S3データのDataXによる統合方法
DataXベースのプラグイン:s3reader
DataXは、1つのジョブで同期するすべてのObjectを同一のデータテーブルとみなすことに注意してください。すべてのObjectが同じschema情報に適合することを、ユーザー自身が保証する必要があります。
サンプルJSON:
{
"job": {
"setting": {
"speed": {
"byte": 10485760
}
},
"content": [
{
"reader": {
"name": "s3reader",
"parameter": {
"accessKey": "xx",
"secretKey": "xx",
"tempPath": "xxx",
"region": "xxxxx",
"bucket": "xxxxx",
"object": [
"aa/bb/*"
],
"compress": "gzip",
"column": [
{
"type": "string",
"index": 0
}
],
"encoding": "UTF-8",
"fieldDelimiter": "\t"
}
},
"writer": {
"name": "streamwriter",
"parameter": {
"encoding": "",
"print": true
}
}
}
]
}
}
現在、S3Readerは次の機能に対応しています:
- TXTファイルの読み取りにのみ対応しており、TXT内のschemaは2次元のテーブルである必要があります。
- CSV形式に類似したファイルに対応しており、区切り文字をカスタマイズできます。
- 複数の型のデータの読み取り(Stringで表現)、列の切り出し、列定数に対応しています
- 再帰的な読み取りと、ファイル名によるフィルタリングに対応しています。
- テキスト圧縮に対応しており、現在の圧縮形式はzip、gzip、bzip2です。なお、1つの圧縮パッケージに複数のファイルをまとめて圧縮することはできません。
- 複数のobjectの並行読み取りに対応しています。
パラメータの説明
-
accessKey
- 説明:S3のaccessKey
- 必須:はい
- デフォルト値:なし
-
secretKey
- 説明:S3のsecretKey
- 必須:はい
- デフォルト値:なし
-
region
- 説明:S3のregion
- 必須:はい
- デフォルト値:なし
-
tempPath
- 説明:ローカルキャッシュの絶対パス
- 必須:はい
- デフォルト値:なし
- フォールトトレランス:取得できなかったobjectKeyは、このディレクトリ下のFailedFile.txtに書き込まれます
-
bucket
- 説明:S3のbucket
- 必須:はい
- デフォルト値:なし
-
object
- 説明:S3のobject情報です。ここでは複数のObjectを入力できます。
単一のS3 Objectを指定した場合、S3Readerは現在シングルスレッドでのみデータを抽出できます。
複数のS3 Objectを指定した場合、S3Readerはマルチスレッドでデータを抽出できます。スレッドの並行数はチャネル数で指定します。
ワイルドカード
*を指定した場合、S3Readerは複数のObject情報の走査を試みます。- 必須:はい
- デフォルト値:なし
-
column
- 説明:読み取るフィールドのリストです。typeはソースデータの型を、indexは現在の列がテキストの何列目から来るか(0から開始)を指定します。valueは現在の型を定数として指定し、ソースファイルからデータを読み取らずに、valueの値に基づいて対応する列を自動生成します。
デフォルトでは、すべてのデータをString型として読み取ることができます。設定は次のとおりです:
"column": ["*"]Columnフィールドの情報を指定することもできます。設定は次のとおりです:
"column": [{"type": "long","index": 0},{"type": "string","value": "alibaba"}]Column情報を指定する場合、typeは入力必須で、indexとvalueのいずれかを選択する必要があります。
- 必須:はい
- デフォルト値:すべてstring型として読み取り
-
fieldDelimiter
- 説明:読み取り時のフィールド区切り文字
- 必須:はい
- デフォルト値:,
-
compress
- 説明:テキストの圧縮タイプです。デフォルトの未入力は圧縮なしを意味します。対応している圧縮タイプはzip、gzip、bzip2です。
- 必須:いいえ
- デフォルト値:圧縮なし
-
encoding
- 説明:読み取るファイルのエンコーディングの設定です。現在はutf-8/gbkのみに対応しています。
- 必須:いいえ
- デフォルト値:utf-8
-
nullFormat
- 説明:テキストファイルでは標準の文字列でnull(ヌルポインタ)を定義できないため、DataXではnullFormatで、nullとして扱う文字列を定義できます。
たとえば、ユーザーがnullFormat="\N"と設定した場合、ソースデータが"\N"であれば、DataXはnullフィールドとみなします。
- 必須:いいえ
- デフォルト値:\N
-
skipHeader
- 説明:CSV形式に類似したファイルでは、ヘッダーが見出しになっている場合があり、スキップする必要があります。デフォルトではスキップしません。
- 必須:いいえ
- デフォルト値:false
-
csvReaderConfig
- 説明:CSV形式のファイルを読み取る際のパラメータ設定で、Map型です。CSV形式のファイルはCsvReaderで読み取ります。多くの設定項目があり、設定しない場合はデフォルト値が使用されます。
- 必須:いいえ
- デフォルト値:なし
よく使われる設定:
"csvReaderConfig":{
"safetySwitch": false,
"skipEmptyRecords": false,
"useTextQualifier": false
}
すべての設定項目とデフォルト値です。設定時は、csvReaderConfigのmapで次のフィールド名に厳密に従って設定してください:
boolean caseSensitive = true;
char textQualifier = 34;
boolean trimWhitespace = true;
boolean useTextQualifier = true;//csvのエスケープ文字を使用するかどうか
char delimiter = 44;//区切り文字
char recordDelimiter = 0;
char comment = 35;
boolean useComments = false;
int escapeMode = 1;
boolean safetySwitch = true;//1列の長さを100000文字に制限するかどうか
boolean skipEmptyRecords = true;//空行をスキップするかどうか
boolean captureRawRecord = true;
型変換
S3自体はデータ型を提供しておらず、この型はDataX S3Readerで定義されています:
| DataX内部型 | S3データ型 |
|---|---|
| Long | Long |
| Double | Double |
| String | String |
| Boolean | Boolean |
| Date | Date |
補足:
- S3 Longは、S3のテキストで整数を文字列で表現したものを指します。例:"19901219"。
- S3 Doubleは、S3のテキストでDoubleを文字列で表現したものを指します。例:"3.1415"。
- S3 Booleanは、S3のテキストでBooleanを文字列で表現したものを指します。例:"true"、"false"。大文字と小文字は区別しません。
- S3 Dateは、S3のテキストでDateを文字列で表現したものを指します。例:"2014-12-31"。Dateにはformatを指定できます。

