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

DataWorks:OSS-HDFS データソース

最終更新日:Apr 16, 2025

OSS-HDFS (JindoFS) は、クラウドネイティブのデータレイクストレージサービスです。DataWorks は、OSS-HDFS データソースのデータを読み書きするための OSS-HDFS Reader と OSS-HDFS Writer を提供しています。このトピックでは、OSS-HDFS データソースとのデータ同期機能について説明します。

制限事項

バッチデータ読み取り

  • OSS-HDFS Reader を使用する場合、以下の点に注意してください。

    リソースグループと OSS-HDFS 間のネットワーク接続は複雑です。OSS-HDFS データソースが追加されているデータ同期タスクを実行するには、データ統合専用の リソースグループを使用することをお勧めします。データ統合専用の リソースグループが、OSS-HDFS データソースが存在するネットワークにアクセスできることを確認してください。

  • OSS-HDFS Reader は、以下の機能をサポートしています。

    • テキスト、CSV、ORC、Parquet ファイル形式をサポートしています。これらの形式のファイルに格納されているデータは、論理的な二次元テーブルとして編成されている必要があります。

    • さまざまな型のデータを読み取り、定数をサポートしています。

    • 再帰的な読み取りとワイルドカードのアスタリスク (*) および疑問符 (?) をサポートしています。

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

重要

現在、OSS-HDFS Reader は、内部のシャーディング方式のため、単一ファイルから並列スレッドを使用してデータを読み取ることはできません。

バッチデータ書き込み

OSS-HDFS Writer を使用する場合、以下の点に注意してください。

  • OSS-HDFS Writer は、論理的な二次元テーブルを格納するテキスト、ORC、Parquet ファイルのみを OSS-HDFS に書き込むことができます。

  • テキストファイルを OSS-HDFS に書き込むには、ファイル内の区切り文字が、関連付ける Hive テーブルの区切り文字と同じであることを確認してください。このようにして、OSS-HDFS に書き込まれたファイルの列と Hive テーブルの列を関連付けることができます。

リアルタイムデータ書き込み

  • リアルタイムデータ書き込みがサポートされています。

  • OSS-HDFS から Hudi 0.14.x にデータをリアルタイムで書き込むことができます。

仕組み

OSS-HDFS Writer は、以下の方法でファイルを OSS-HDFS に書き込みます。

  1. 指定したパス パラメーターに基づいて、OSS-HDFS に存在しない一時ディレクトリを作成します。

    一時ディレクトリは、path_ランダムサフィックス の形式で指定されます。

  2. リーダーから取得したファイルを一時ディレクトリに書き込みます。

  3. すべてのファイルが書き込まれた後、ファイルを一時ディレクトリから指定されたディレクトリに移動します。OSS-HDFS に書き込むファイルの名前は、OSS-HDFS に既存のファイルの名前と異なる必要があります。

  4. 一時ディレクトリを削除します。ネットワークの切断により OSS-HDFS Writer が OSS-HDFS に接続できない場合は、一時ディレクトリと一時ディレクトリ内のすべてのファイルを 手動で削除する必要があります。

データ型マッピング

バッチデータ読み取り

次の表に、OSS-HDFS Reader が Parquet、ORC、テキスト、CSV ファイルのデータ型を変換する際に基づくデータ型マッピングを示します。

カテゴリ

OSS-HDFS データ型

整数

TINYINT、SMALLINT、INT、BIGINT

浮動小数点

FLOAT、DOUBLE、DECIMAL

文字列

STRING、CHAR、VARCHAR

日付と時刻

DATE、TIMESTAMP

ブール値

BOOLEAN

説明
  • LONG: OSS-HDFS ファイルの整数型のデータ。例: 123456789

  • DOUBLE: OSS-HDFS ファイルの浮動小数点型のデータ。例: 3.1415

  • BOOLEAN: OSS-HDFS ファイルのブール型のデータ。例: true または false。データは大文字と小文字を区別しません。

  • DATE: OSS-HDFS ファイルの日付と時刻型のデータ。例: 2014-12-31 00:00:00

バッチデータ書き込み

OSS-HDFS Writer は、テキスト、ORC、または Parquet ファイルを OSS-HDFS の指定されたディレクトリに書き込むことができます。

次の表に、OSS-HDFS Writer がデータ型を変換する際に基づくデータ型マッピングを示します。

カテゴリ

OSS-HDFS データ型

整数

TINYINT、SMALLINT、INT、BIGINT

浮動小数点

FLOAT、DOUBLE

文字列

CHAR、VARCHAR、STRING

ブール値

BOOLEAN

日付と時刻

DATE、TIMESTAMP

データ同期タスクの開発

データ同期タスクのエントリ ポイントと設定手順については、以下のセクションを参照してください。パラメーター設定については、タスクの設定タブにある各パラメーターのヒントを参照してください。

データソースの追加

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

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

単一テーブルのデータを同期するリアルタイム同期タスクの設定

設定手順の詳細については、「DataStudio でリアルタイム同期タスクを作成する」および「DataStudio でのリアルタイム同期タスクの設定」をご参照ください。

データベースのフルデータまたは増分データのリアルタイム同期を実装するための同期設定

設定手順の詳細については、「データ統合での同期タスクの設定」をご参照ください。

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

付録: コードエディターを使用したバッチ同期タスクの設定

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

OSS-HDFS Reader のコード

{
    "type": "job",
    "version": "2.0",
    "steps": [
        {
            "stepType": "oss_hdfs",// プラグイン名。
            "parameter": {
                "path": "",// データを読み取るファイルのパス。
                "datasource": "",// データソースの名前。
                "column": [
                    {
                        "index": 0,// ソースファイルの列のインデックス。インデックスは 0 から始まり、OSS-HDFS Reader がソースファイルの最初の列からデータを読み取ることを示します。
                        "type": "string"// フィールドの型。
                    },
                    {
                        "index": 1,
                        "type": "long"
                    },
                    {
                        "index": 2,
                        "type": "double"
                    },
                    {
                        "index": 3,
                        "type": "boolean"
                    },
                    {
                        "format": "yyyy-MM-dd HH:mm:ss", // 時間形式。
                        "index": 4,
                        "type": "date"
                    }
                ],
                "fieldDelimiter": ",",// 列の区切り文字。
                "encoding": "UTF-8",// エンコード形式。
                "fileFormat": ""// ファイル形式。
            },
            "name": "Reader",
            "category": "reader"
        },
        {
            "stepType": "stream",
            "parameter": {},
            "name": "Writer",
            "category": "writer"
        }
    ],
    "setting": {
        "errorLimit": {
            "record": ""// 許容されるダーティデータレコードの最大数。
        },
        "speed": {
            "concurrent": 3,// 並列スレッドの最大数。
            "throttle": true, // スロットリングを有効にするかどうかを指定します。値 false はスロットリングが無効であることを示し、値 true はスロットリングが有効であることを示します。mbps パラメーターは、throttle パラメーターが true に設定されている場合にのみ有効になります。
            "mbps":"12"// 最大伝送速度。単位: MB/s。
        }
    },
    "order": {
        "hops": [
            {
                "from": "Reader",
                "to": "Writer"
            }
        ]
    }
}

OSS-HDFS Reader のコードのパラメーター

パラメーター

説明

必須

デフォルト値

path

データを読み取るファイルのパス。

  • 単一の OSS-HDFS ファイルを指定した場合、OSS-HDFS Reader は 1 つのスレッドのみを使用してファイルからデータを読み取ります。

  • 複数の OSS-HDFS ファイルを指定した場合、OSS-HDFS Reader は並列スレッドを使用してファイルからデータを読み取ります。スレッド数は、concurrent パラメーターによって決まります。複数のファイルからデータを読み取る場合は、/hadoop/data_201704* などの正規表現を指定できます。ファイル名に時間情報が含まれており、時間情報が規則的に提示されている場合は、スケジューリングパラメーターを正規表現と一緒に使用できます。スケジューリングパラメーターの値は、タスクのデータタイムスタンプに基づいて置き換えられます。スケジューリングパラメーターの詳細については、「スケジューリングパラメーターのサポートされている形式」をご参照ください。

    説明

    実際に開始されるスレッド数は、読み取る OSS-HDFS ファイルの数と設定する並列スレッド数のうち、小さい方の値と常に同じです。

  • パスにワイルドカードが含まれている場合、OSS-HDFS Reader は、パスに一致するすべてのファイルからデータを読み取ろうとします。たとえば、パスを /oss-hdfs/ として指定した場合、OSS-HDFS Reader は oss-hdfs ディレクトリ内のすべてのファイルを読み取ります。OSS-HDFS Reader は、ワイルドカードとしてアスタリスク (*) と疑問符 (?) のみをサポートしています。構文は、Linux コマンドラインで使用されるファイル名ワイルドカードの構文に似ています。

重要
  • データ統合は、データ同期タスクで読み取るすべてのファイルを単一のテーブルと見なします。すべてのファイルが同じスキーマに適合し、データ統合がこれらのすべてのファイルを読み取る権限を持っていることを確認してください。

  • OSS-HDFS データソースを追加するときに指定した AccessKey ペアが、OSS-HDFS データソースに対する読み取り権限を持っていることを確認してください。

はい

デフォルト値なし

fileFormat

データを読み取るファイルの形式。

OSS-HDFS Reader はファイル形式を自動的に識別し、関連する読み取りポリシーを使用します。OSS-HDFS Reader はデータを読み取る前に、指定されたパスのすべてのファイルが fileFormat パラメーターで指定された形式と一致するかどうかを確認します。ファイルの形式が fileFormat パラメーターで指定された形式と一致しない場合、データ同期タスクは失敗します。

fileFormat パラメーターの有効な値:

  • TEXT: テキスト形式。

  • ORC: ORC 形式。

  • CSV: CSV 形式。これは一般的な OSS-HDFS ファイル形式です。CSV ファイルのデータは、論理的な二次元テーブルとして編成されています。

  • PARQUET: Parquet 形式。

はい

デフォルト値なし

column

データを読み取る列の名前。デフォルトでは、OSS-HDFS Reader はすべてのデータを文字列として読み取ります。この場合、このパラメーターを "column": ["*"] に設定します。

column パラメーターは、次の形式でも設定できます。

  • type: ソース列のデータ型を指定します。

  • index: ソース列の ID を指定します。0 から始まります。

  • value: 定数を指定します。value フィールドを指定した場合、OSS-HDFS Reader はこのフィールドの値を読み取ります。

説明

column パラメーターでは、type フィールドと、index フィールドと value フィールドのいずれか 1 つを設定する必要があります。

{
  "type": "long",
  "index": 0
  // ソースファイルの最初の LONG 型の列。インデックスは 0 から始まります。index フィールドは、ファイル内のデータを読み取る列の ID を示します。
},
{
  "type": "string",
  "value": "alibaba"
  // 現在の列の値。これは定数列 alibaba です。OSS-HDFS Reader によって内部的に生成されます。
}

はい

デフォルト値なし

fieldDelimiter

データを読み取る列の区切り文字。ソースファイルがテキストファイルの場合は、列の区切り文字を指定する必要があります。列の区切り文字を指定しない場合、OSS-HDFS Reader はデフォルトでコンマ (,) を列の区切り文字として使用します。ソースファイルが ORC ファイルまたは Parquet ファイルの場合は、列の区切り文字を指定する必要はありません。

いいえ

,

encoding

データを読み取るファイルのエンコード形式。

いいえ

utf-8

nullFormat

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

たとえば、このパラメーターを null に設定すると、データ統合は null をヌルポインターと見なします。

いいえ

デフォルト値なし

compress

圧縮形式。GZIP、BZIP2、Snappy の圧縮形式がサポートされています。

いいえ

デフォルト値なし

OSS-HDFS Writer のコード

{
    "type": "job",
    "version": "2.0",// バージョン番号。
    "steps": [
        {
            "stepType": "stream",
            "parameter": {},
            "name": "Reader",
            "category": "reader"
        },
        {
            "stepType": "oss_hdfs",// プラグイン名。
            "parameter": {
                "path": "",// ファイルが書き込まれる OSS-HDFS のディレクトリ。
                "fileName": "",// OSS-HDFS に書き込むファイルの名前のプレフィックス。
                "compress": "",// OSS-HDFS に書き込むファイルの圧縮形式。
                "datasource": "",// データソースの名前。
                "column": [
                    {
                        "name": "col1",// 列の名前。
                        "type": "string"// 列のデータ型。
                    },
                    {
                        "name": "col2",
                        "type": "int"
                    },
                    {
                        "name": "col3",
                        "type": "double"
                    },
                    {
                        "name": "col4",
                        "type": "boolean"
                    },
                    {
                        "name": "col5",
                        "type": "date"
                    }
                ],
                "writeMode": "",// 書き込みモード。
                "fieldDelimiter": ",",// 列の区切り文字。
                "encoding": "",// エンコード形式。
                "fileFormat": "text"// OSS-HDFS に書き込むファイルの形式。
            },
            "name": "Writer",
            "category": "writer"
        }
    ],
    "setting": {
        "errorLimit": {
            "record": ""// 許容されるダーティデータレコードの最大数。
        },
        "speed": {
            "concurrent": 3,// 並列スレッドの最大数。
            "throttle": false // スロットリングを有効にするかどうかを指定します。値 false はスロットリングが無効であることを示し、値 true はスロットリングが有効であることを示します。mbps パラメーターは、throttle パラメーターが true に設定されている場合にのみ有効になります。
        }
    },
    "order": {
        "hops": [
            {
                "from": "Reader",
                "to": "Writer"
            }
        ]
    }
}

OSS-HDFS Writer のコードのパラメーター

パラメーター

説明

必須

デフォルト値

fileFormat

データの読み取り元のファイルの形式です。

  • text: OSS-HDFS に書き込むファイルのタイプはテキストです。

  • orc: OSS-HDFS に書き込むファイルのタイプは ORC です。

  • parquet: OSS-HDFS に書き込むファイルのタイプは Parquet です。

はい

デフォルト値なし

パス

ファイルを書き込む OSS-HDFS 内のディレクトリ。OSS-HDFS Writer は、並列スレッドの構成に基づいて、複数のファイルをディレクトリに書き込みます。

ファイル内の列を Hive テーブル内の列に関連付けるには、パス パラメーターを OSS-HDFS 内の Hive テーブルのストレージ パスに設定します。たとえば、Hive データ ウェアハウスのストレージ パスを指定できます。

はい

デフォルト値なし

fileName

OSS-HDFS に書き込むファイルの名前のプレフィックスです。指定されたプレフィックスにランダムなサフィックスが付加され、各スレッドで使用される実際のファイル名が形成されます。

はい

デフォルト値なし

データを書き込む列の名前。Hiveテーブルの一部の列にのみデータを書き込むことはできません。

ファイル内の列をHiveテーブル内の列に関連付けるには、各列の名前と型の パラメーター を設定します。name パラメーター は列の名前を指定し、type パラメーター は列のデータ型を指定します。

column パラメーター は、次の形式で設定できます。

{
    "column":
    [
        {
            // ユーザー名
            "name": "userName",
            // 年齢
            "type": "string"
        },
        {
            // ユーザー名
            "name": "age",
            // 年齢
            "type": "long"
        }
    ]
}

fileFormat パラメーター が text または orc に設定されている場合は必須です。

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

書き込みモード

データを読み取るファイルの形式。

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

  • nonConflict: OSS-HDFS Writer は、指定されたファイル名プレフィックスを持つファイルがデスティネーションディレクトリに存在する場合、エラーを返します。

  • truncate: OSS-HDFS Writer は、ファイルがディレクトリに書き込まれる前に、指定されたファイル名プレフィックスで始まる既存のファイルをすべてデスティネーションディレクトリから削除します。たとえば、fileName を abc に設定すると、名前が abc で始まる既存のファイルはすべてデスティネーションディレクトリから削除されます。

はい

デフォルト値なし

fieldDelimiter

OSS-HDFS に書き込むファイルで使用される列区切り文字です。

説明

1 文字の区切り文字のみがサポートされています。複数文字の区切り文字を指定すると、エラーが報告されます。

fileFormat パラメーターが text または orc に設定されている場合は必須です。

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

圧縮

ファイルを書き込む OSS-HDFS のディレクトリ。OSS-HDFS Writer は、並列スレッドの設定に基づいて、複数のファイルをディレクトリに書き込みます。

ファイルの列と Hive テーブルの列を関連付けるには、path パラメーターを OSS-HDFS 内の Hive テーブルのストレージパスに設定します。たとえば、Hive データウェアハウスのストレージパスを指定できます。

はい

デフォルト値なし

エンコーディング

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

はい

デフォルト値なし

Parquetスキーマ

OSS-HDFS に書き込む Parquet ファイルのスキーマ。このパラメーターは、fileFormat パラメーターが parquet に設定されている場合にのみ使用できます。形式:

message MessageName {
// 必須、データ型、列名
.....................;
}

パラメーター:

  • MessageName: MessageNameオブジェクトの名前。

  • required: 列を空にすることはできません。ビジネス要件に基づいて optional を指定することもできます。すべての列に optional を指定することをお勧めします。

  • dataType: Parquetファイルは、BOOLEAN、INT32、INT64、INT96、FLOAT、DOUBLE、BINARY、FIXED_LEN_BYTE_ARRAYなど、さまざまなデータ型をサポートしています。列に文字列が格納されている場合は、このパラメーターを BINARY に設定します。

説明

各行(最終行を含む)はセミコロン(;)で終わる必要があります。

例:

message m {
optional int64 id; // ID
optional int64 date_id; // 日付ID
optional binary datetimestring; // 日時文字列
optional int32 dspId; // DSP ID
optional int32 advertiserId; // 広告主ID
optional int32 status; // ステータス
optional int64 bidding_req_num; // 入札リクエスト数
optional int64 imp; // インプレッション数
optional int64 click_num; // クリック数
}

いいえ

データ