メインコンテンツまでスキップ

S3データのDataXによる統合方法

最終更新 2026/10/05

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は次の機能に対応しています:

  1. TXTファイルの読み取りにのみ対応しており、TXT内のschemaは2次元のテーブルである必要があります。
  2. CSV形式に類似したファイルに対応しており、区切り文字をカスタマイズできます。
  3. 複数の型のデータの読み取り(Stringで表現)、列の切り出し、列定数に対応しています
  4. 再帰的な読み取りと、ファイル名によるフィルタリングに対応しています。
  5. テキスト圧縮に対応しており、現在の圧縮形式はzip、gzip、bzip2です。なお、1つの圧縮パッケージに複数のファイルをまとめて圧縮することはできません。
  6. 複数の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データ型
LongLong
DoubleDouble
StringString
BooleanBoolean
DateDate

補足:

  • 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を指定できます。
このページは役に立ちましたか?
このページの内容