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 に書き込みます。
指定したパス パラメーターに基づいて、OSS-HDFS に存在しない一時ディレクトリを作成します。
一時ディレクトリは、path_ランダムサフィックス の形式で指定されます。
リーダーから取得したファイルを一時ディレクトリに書き込みます。
すべてのファイルが書き込まれた後、ファイルを一時ディレクトリから指定されたディレクトリに移動します。OSS-HDFS に書き込むファイルの名前は、OSS-HDFS に既存のファイルの名前と異なる必要があります。
一時ディレクトリを削除します。ネットワークの切断により 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 に追加する必要があります。詳細については、「データソースの追加と管理」をご参照ください。
単一テーブルのデータを同期するバッチ同期タスクの設定
設定手順の詳細については、「コードレス UI を使用したバッチ同期タスクの設定」および「コードエディターを使用したバッチ同期タスクの設定」をご参照ください。
コードエディターを使用してバッチ同期タスクを設定する場合に設定されるすべてのパラメーターと実行されるコードについては、「付録: コードとパラメーター」をご参照ください。
単一テーブルのデータを同期するリアルタイム同期タスクの設定
設定手順の詳細については、「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 | データを読み取るファイルのパス。
重要
| はい | デフォルト値なし |
fileFormat | データを読み取るファイルの形式。 OSS-HDFS Reader はファイル形式を自動的に識別し、関連する読み取りポリシーを使用します。OSS-HDFS Reader はデータを読み取る前に、指定されたパスのすべてのファイルが fileFormat パラメーターで指定された形式と一致するかどうかを確認します。ファイルの形式が fileFormat パラメーターで指定された形式と一致しない場合、データ同期タスクは失敗します。 fileFormat パラメーターの有効な値:
| はい | デフォルト値なし |
column | データを読み取る列の名前。デフォルトでは、OSS-HDFS Reader はすべてのデータを文字列として読み取ります。この場合、このパラメーターを column パラメーターは、次の形式でも設定できます。
説明 column パラメーターでは、type フィールドと、index フィールドと value フィールドのいずれか 1 つを設定する必要があります。
| はい | デフォルト値なし |
fieldDelimiter | データを読み取る列の区切り文字。ソースファイルがテキストファイルの場合は、列の区切り文字を指定する必要があります。列の区切り文字を指定しない場合、OSS-HDFS Reader はデフォルトでコンマ (,) を列の区切り文字として使用します。ソースファイルが ORC ファイルまたは Parquet ファイルの場合は、列の区切り文字を指定する必要はありません。 | いいえ | , |
encoding | データを読み取るファイルのエンコード形式。 | いいえ | utf-8 |
nullFormat | ヌルポインターを表す文字列。テキストファイルでは、ヌルポインターを表す標準文字列はありません。このパラメーターを使用して、ヌルポインターを表す文字列を定義できます。 たとえば、このパラメーターを | いいえ | デフォルト値なし |
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 | データの読み取り元のファイルの形式です。
| はい | デフォルト値なし |
パス | ファイルを書き込む OSS-HDFS 内のディレクトリ。OSS-HDFS Writer は、並列スレッドの構成に基づいて、複数のファイルをディレクトリに書き込みます。 ファイル内の列を Hive テーブル内の列に関連付けるには、パス パラメーターを OSS-HDFS 内の Hive テーブルのストレージ パスに設定します。たとえば、Hive データ ウェアハウスのストレージ パスを指定できます。 | はい | デフォルト値なし |
fileName | OSS-HDFS に書き込むファイルの名前のプレフィックスです。指定されたプレフィックスにランダムなサフィックスが付加され、各スレッドで使用される実際のファイル名が形成されます。 | はい | デフォルト値なし |
列 | データを書き込む列の名前。Hiveテーブルの一部の列にのみデータを書き込むことはできません。 ファイル内の列をHiveテーブル内の列に関連付けるには、各列の名前と型の パラメーター を設定します。name パラメーター は列の名前を指定し、type パラメーター は列のデータ型を指定します。 column パラメーター は、次の形式で設定できます。
| fileFormat パラメーター が text または orc に設定されている場合は必須です。 | デフォルト値はありません |
書き込みモード | データを読み取るファイルの形式。
| はい | デフォルト値なし |
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 に設定されている場合にのみ使用できます。形式:
パラメーター:
説明 各行(最終行を含む)はセミコロン(;)で終わる必要があります。 例:
| いいえ | データ |