すべてのプロダクト
Search
ドキュメントセンター

DataWorks:FTPデータソース

最終更新日:Jan 11, 2025

DataWorksは、FTPデータソースからデータを読み取り、FTPデータソースにデータを書き込むためのFTP ReaderとFTP Writerを提供します。このトピックでは、FTPデータソースとのデータ同期機能について説明します。

制限事項

FTP ReaderはリモートFTPサーバーに接続し、サーバーからデータを読み取り、データの形式をData Integrationで読み取り可能な形式に変換します。 FTPサーバー上のファイルは、非構造化データのみを格納します。次の表に、FTP Readerでサポートされている機能とサポートされていない機能を示します。

サポートされている

サポートされていない

  • TXTファイルからデータを読み取ります。ファイル内のデータは、論理的な2次元テーブルである必要があります。

  • カスタム区切り文字を使用したCSVのようなファイルからデータを読み取ります。

  • さまざまなタイプのデータを文字列として読み取り、定数とカラムプルーニングをサポートします。

  • 再帰的なデータ読み取りとファイル名ベースのフィルタリングをサポートします。

  • ファイル圧縮をサポートします。サポートされている圧縮形式は、GZIP、BZIP2、ZIP、LZO、およびLZO_DEFLATEです。

  • 並列スレッドを使用して複数のファイルからデータを読み取ります。

  • 並列スレッドを使用して単一のファイルを読み取ります。

  • 並列スレッドを使用して圧縮ファイルを読み取ります。

FTP Writerは、リーダーから取得したデータをファイルに変換し、FTPサーバーに書き込みます。 FTPサーバー上のファイルは、非構造化データのみを格納します。次の表に、FTP Writerでサポートされている機能とサポートされていない機能を示します。

サポートされている

サポートされていない

  • テキストファイルのみをFTPサーバーに書き込みます。ファイル内のデータは、論理的な2次元テーブルとして編成する必要があります。 FTP Writerは、ビデオデータなどのバイナリラージオブジェクト(BLOB)データを格納するファイルをFTPサーバーに書き込むことはできません。

  • カスタム区切り文字を含むTXTファイルとCSVのようなファイルをFTPサーバーに書き込みます。

  • 並列スレッドを使用してFTPサーバーにファイルを書き込みます。各スレッドは1つのファイルを書き込みます。

  • 並列スレッドを使用して単一のファイルをFTPサーバーに書き込みます。

  • データ型を区別します。 FTPはデータ型を区別しません。したがって、FTP Writerはすべてのデータを文字列としてFTPサーバー上のファイルに書き込みます。

  • 圧縮ファイルをFTPサーバーに書き込みます。

データ型マッピング

リモートFTPファイルはデータ型を区別しません。データ型はFTP Readerによって定義されます。

Data Integrationデータ型

FTPファイルのデータ型

LONG

LONG

DOUBLE

DOUBLE

STRING

STRING

BOOLEAN

BOOLEAN

DATE

DATE

データソースの追加

特定のデータソースとの間でデータを同期するデータ同期タスクを構成する前に、DataWorksにデータソースを追加する必要があります。詳細については、データソースの追加と管理をご参照ください。

データ同期タスクの開発

データ同期タスクのエントリポイントと手順については、以下のセクションを参照してください。

単一テーブルのデータを同期するバッチ同期タスクの構成

付録:コードとパラメーター

コードエディターを使用したバッチ同期タスクの構成

コードエディターを使用してバッチ同期タスクを構成する場合は、コードエディターの形式要件に基づいて、関連データソースのリーダーとライターのパラメーターを構成する必要があります。形式要件の詳細については、コードエディターを使用したバッチ同期タスクの構成をご参照ください。次の情報は、コードエディターのリーダーとライターのパラメーターの構成の詳細について説明しています。

FTP Readerのコード

{
    "type":"job",
    "version":"2.0",// バージョン番号。
    "steps":[
        {
            "stepType":"ftp",// プラグイン名。
            "parameter":{
                "path":[],// ファイルパス。
                "nullFormat":"",// NULLポインターを表す文字列。
                "compress":"",// ファイルを圧縮する形式。
                "datasource":"",// データソースの名前。
                "column":[// カラムの名前。
                    {
                        "index":0,// カラムのID。
                        "type":""// データ型。
                    }
                ],
                "skipHeader":"",// ファイルにヘッダーがある場合、ヘッダーをスキップするかどうかを指定します。
                "fieldDelimiter":",",// カラム区切り文字。
                "encoding":"UTF-8",// エンコード形式。
                "fileFormat":"csv"// ファイルの形式。
            },
            "name":"Reader",
            "category":"reader"
        },
        {
            "stepType":"stream",
            "parameter":{},
            "name":"Writer",
            "category":"writer"
        }
    ],
    "setting":{
        "errorLimit":{
            "record":"0"// 許容されるダーティデータレコードの最大数。
        },
        "speed":{
        "throttle":true,// スロットリングを有効にするかどうかを指定します。値falseはスロットリングが無効になっていることを示し、値trueはスロットリングが有効になっていることを示します。 mbpsパラメーターは、throttleパラメーターがtrueに設定されている場合にのみ有効になります。
            "concurrent":1, // 並列スレッドの最大数。
            "mbps":"12"// 最大転送速度。単位:MB/s。
        }
    },
    "order":{
        "hops":[
            {
                "from":"Reader",
                "to":"Writer"
            }
        ]
    }
}

FTP Readerのコードのパラメーター

パラメーター

説明

必須

デフォルト値

datasource

データソースの名前。追加されたデータソースの名前と同じである必要があります。コードエディターを使用してデータソースを追加できます。

はい

デフォルト値なし

path

データを読み取るFTPサーバー上のパス。パスは、目的のファイルを格納するディレクトリのパスと、サフィックス付きのファイル名を含む完全パスである必要があります。複数のパスを指定できます。

  • 1つのパスのみを指定した場合、FTP Readerは1つのスレッドのみを使用して関連ファイルを読み取ります。並列スレッドを使用して単一の非圧縮ファイルからデータを読み取る機能は、将来利用可能になります。

  • 複数のパスを指定した場合、FTP Readerは並列スレッドを使用して関連ファイルを読み取ります。実際の スレッド数は、チャネルの数によって決まります。

  • パスにワイルドカードが含まれている場合、FTP Readerはパスに一致するすべてのファイルを読み取ろうとします。たとえば、パス/bazhen/を指定すると、FTP Readerはbazhenディレクトリ内のすべてのファイルを読み取ります。 FTP Readerは、ワイルドカードとしてアスタリスク(*)のみをサポートしています。 FTP Readerでは、スケジューリングパラメーターを使用してファイル名とファイルパスを構成できます。

説明
  • Java Virtual Machine(JVM)でメモリ不足(OOM)エラーが発生する可能性があるため、アスタリスク(*)を使用しないことをお勧めします。

  • Data Integrationは、同期タスク内のすべてのテキストファイルを単一のテーブルと見なします。同期タスク内のすべてのファイルが同じスキーマを使用していることを確認してください。

  • データ形式がCSVに似ており、Data Integrationで読み取り可能であることを確認してください。

  • 指定されたパスに読み取り可能なファイルが存在しない場合、FTP Readerはエラーを報告します。

はい

デフォルト値なし

column

データを読み取るカラム。 typeパラメーターはカラムのデータ型を指定します。 indexパラメーターは、ソーステーブル内のカラムのIDを0から始めて指定します。 valueパラメーターは、カラムが定数カラムの場合にカラム値を指定します。

デフォルトでは、FTP Readerはすべてのデータを文字列として読み取ります。この場合、このパラメーターを"column":["*"]に設定します。 columnパラメーターは、次の形式で構成することもできます。

{
    "type": "long",
    "index": 0    // データを読み取るファイルの最初のINT型カラム。
  },
  {
    "type": "string",
    "value": "alibaba"  // 現在のカラムの値。このコードでは、値は定数alibabaです。
  }

columnパラメーターでは、typeパラメーターを構成し、indexパラメーターとvalueパラメーターのいずれかを構成する必要があります。

はい

デフォルト値なし

fieldDelimiter

データを読み取るファイルで使用されるカラム区切り文字。

説明

FTP Readerのカラム区切り文字を指定する必要があります。デフォルトの区切り文字はカンマ(,)です。カラム区切り文字を指定しない場合は、デフォルトのカラム区切り文字が使用されます。

はい

,

skipHeader

ファイルにヘッダーがある場合、CSVのようなファイルのヘッダーをスキップするかどうかを指定します。 skipHeaderパラメーターは、圧縮ファイルではサポートされていません。このパラメーターのデフォルト値はfalseで、FTP ReaderがCSVのようなファイルのヘッダーをスキップしないことを示します。

いいえ

false

encoding

FTPサーバーに書き込むファイルのエンコード形式。

いいえ

utf-8

nullFormat

NULLポインターを表す文字列。 TXTファイルでは、NULLポインターを表す標準文字列はありません。このパラメーターを使用して、NULLポインターを表す文字列を定義できます。例:

  • nullFormat:"null"を指定すると、リーダーは印刷可能な文字列nullをNULLポインターと見なします。

  • nullFormat:"\u0001"を指定すると、リーダーは印刷不可能な文字列\u0001をNULLポインターと見なします。

  • nullFormatパラメーターを構成しない場合、リーダーはソースデータを変換しません。

いいえ

デフォルト値なし

markDoneFileName

同期タスクを開始できることを示すために使用されるファイルの名前。 Data Integrationは、データ同期前にファイルが存在するかどうかを確認します。ファイルが存在しない場合、Data Integrationは後で再度確認します。 Data Integrationは、ファイルが検出された後にのみ同期タスクを開始します。

いいえ

デフォルト値なし

maxRetryTime

ファイルが検出されない場合のファイル検出の最大再試行回数。デフォルトでは、最大60回の再試行が許可されます。 Data Integrationは1分ごとにファイルを検出します。プロセス全体は60分続きます。

いいえ

60

csvReaderConfig

CSVファイルを読み取るために必要な構成。パラメーター値はMAPタイプと一致する必要があります。 CSVファイルリーダーを使用して、CSVファイルからデータを読み取ることができます。 CSVファイルリーダーは複数の構成をサポートしています。

いいえ

デフォルト値なし

fileFormat

ファイルの形式。デフォルトでは、FTP ReaderはCSVファイルからデータを読み取ります。 CSVファイルのデータは、論理的な2次元テーブルである必要があります。ファイル形式としてbinaryを指定すると、データは複製と転送のためにバイナリ形式に変換されます。

FTPやObject Storage Service(OSS)などのストレージシステム間で完全なディレクトリ構造を複製する場合にのみ、このパラメーターを構成する必要があります。

いいえ

デフォルト値なし

FTP Writerのコード

{
    "type":"job",
    "version":"2.0",// バージョン番号。
    "steps":[
        {
            "stepType":"stream",
            "parameter":{},
            "name":"Reader",
            "category":"reader"
        },
        {
            "stepType":"ftp",// プラグイン名。
            "parameter":{
                "path":"",// ファイルを書き込むFTPサーバー上のディレクトリ。
                "fileName":"",// FTPサーバーに書き込むファイルの名前のプレフィックス。
                "nullFormat":"null",// NULLポインターを表す文字列。
                "dateFormat":"yyyy-MM-dd HH:mm:ss",// 時間形式。
                "datasource":"",// データソースの名前。
                "writeMode":"",// 書き込みモード。
                "fieldDelimiter":",",// カラム区切り文字。
                "encoding":"",// エンコード形式。
                "fileFormat":""// FTP Writerがファイルを書き込む形式。
            },
            "name":"Writer",
            "category":"writer"
        }
    ],
    "setting":{
        "errorLimit":{
            "record":"0"// 許容されるダーティデータレコードの最大数。
        },
        "speed":{
            "throttle":true,// スロットリングを有効にするかどうかを指定します。値falseはスロットリングが無効になっていることを示し、値trueはスロットリングが有効になっていることを示します。 mbpsパラメーターは、throttleパラメーターがtrueに設定されている場合にのみ有効になります。
            "concurrent":1, // 並列スレッドの最大数。
            "mbps":"12"// 最大転送速度。単位:MB/s。
        }
    },
    "order":{
        "hops":[
            {
                "from":"Reader",
                "to":"Writer"
            }
        ]
    }
}

FTP Writerのコードのパラメーター

パラメーター

パラメーター

説明

必須

データソース

データソースの名前。追加されたデータソースの名前と同じである必要があります。コードエディターを使用してデータソースを追加できます。

はい

デフォルト値なし

タイムアウト

FTPサーバーへの接続のタイムアウト期間です。単位:ミリ秒。

いいえ

60,000

パス

ファイルを書き込む FTP サーバー上のディレクトリ。FTP Writer は、並列処理設定に基づいて、複数のファイルをディレクトリに書き込むために並列スレッドを使用します。

はい

デフォルト値なし

ファイル名

FTP サーバーに書き込むファイルの名前のプレフィックスです。ランダムなサフィックスがファイル名に追加され、各スレッドで使用される実際のファイル名が形成されます。

はい

デフォルト値なし

singleFileOutput

FTPサーバーに書き込むファイルの名前にランダムなサフィックスを追加するかどうかを指定します。FTP Writer が FTP サーバーに書き込むファイルの名前は、fileName パラメーターの値に関連付けられています。ランダムなサフィックスが不要な場合は、singleFileOutput パラメーターを true に設定します。この場合、FTP Writer はファイルの名前のプレフィックスを使用して FTP サーバーにファイルを書き込みます。

いいえ

false

writeMode

FTP Writer がファイルを書き込むモード。有効な値:

  • truncate: singleFileOutput パラメーターが true に設定されている場合、FTP Writer は、ファイルをディレクトリに書き込む前に、宛先ディレクトリ内の同じ名前のファイルを削除します。 singleFileOutput パラメーターが false に設定されている場合、FTP Writer は、ファイルをディレクトリに書き込む前に、宛先ディレクトリ内の fileName で指定されたプレフィックスを含むすべての既存ファイルを削除します。

  • append: FTP Writer は、fileName で指定されたファイル名プレフィックスに基づいてファイルを直接書き込み、実際のファイル名が既存のファイルの名前と競合しないようにします。

  • nonConflict: 宛先ディレクトリに fileName で指定されたプレフィックスを含む名前のファイルが含まれている場合、FTP Writer はエラーを返します。

はい

デフォルト値なし

fieldDelimiter

FTPサーバーに書き込むファイルで使用される列区切り文字。区切り文字は 1 文字でなければなりません。

はい

既定値なし

skipHeader

CSV のようなファイルにヘッダーがある場合、ヘッダーをスキップするかどうかを指定します。デフォルトでは、ヘッダーはスキップされません。skipHeader パラメーターは、圧縮ファイルでは使用できません。

いいえ

false

圧縮

FTPサーバーに書き込むファイルの圧縮形式。有効な値: gzip および bzip2

いいえ

デフォルト値ではありません

エンコーディング

FTP サーバーに書き込むファイルのエンコード形式。

いいえ

utf-8

nullFormat

null ポインターを表す文字列。テキストファイルでは、標準の文字列で null ポインターを表すことはできません。このパラメーターを使用して、null ポインターを表す文字列を定義できます。

たとえば、nullFormat を null に設定すると、Data Integration は null を null ポインター(4 文字)と見なします。

いいえ

デフォルト値なし

日付形式

DATE 型のデータがファイルにシリアル化される形式。たとえば、「dateFormat」: 「yyyy-MM-dd」 などです。

はい

デフォルト値なし

ファイル形式

FTPサーバーにファイルを書き込む形式。有効な値: CSV および TEXT。CSVファイルとして書き込まれる場合、ファイルは CSV 仕様に従う必要があります。ファイル内のデータに列区切り文字が含まれている場合、列区切り文字は二重引用符 (") でエスケープされます。TXTファイルとして書き込まれる場合、ファイル内のデータは列区切り文字で区切られます。この場合、列区切り文字はエスケープされません。

いいえ

テキスト

ヘッダー

ファイルが TXT または CSV ファイルとして書き込まれる場合のテーブル ヘッダー。たとえば、["id","name","age"] などです。これは、id、name、および age フィールドが最初の行として CSV ファイルに書き込まれることを示します。

いいえ

既定値なし

完了済みファイル名

  • 同期タスクが正常に実行されたことを示すために使用されるファイルの名前。Data Integration は、データ同期後にファイルが存在するかどうかを確認します。このパラメータには、ファイルの絶対パスを設定します。

  • 定期的にスケジュールされるバッチ同期タスクの場合、ファイル名に [スケジューリングパラメータ] を追加することをお勧めします。たとえば、ファイル名を /user/ftp/markDone_${bizdate}.txt に設定できます。ここで、${bizdate} はスケジューリングパラメータを示します。

いいえ

ファイルを書