OSS-HDFS サービス (JindoFS サービス) は、クラウドネイティブのデータレイクストレージプロダクトです。OSS-HDFS データソースは、OSS-HDFS との間でデータの読み書きを行うための双方向チャネルを提供します。このトピックでは、DataWorks が OSS-HDFS に対して提供するデータ同期機能について説明します。
制限事項
オフライン読み取り
OSS-HDFS Reader を使用する際の注意事項は次のとおりです。
リソースグループから OSS-HDFS へのネットワーク接続は複雑になる場合があります。データ同期タスクを実行するには、サーバーレスリソースグループ (推奨) またはデータ統合専用リソースグループを使用してください。ご利用のリソースグループがネットワーク経由で OSS-HDFS にアクセスできることを確認してください。
OSS-HDFS Reader は、次の機能をサポートしています。
text、csv、orc、parquet 形式のファイルをサポートしています。ファイルの内容は、論理的な二次元テーブルである必要があります。
複数のデータ型と列定数の読み取りをサポートしています。
再帰的な読み取りと、ワイルドカードの
*および?をサポートしています。複数ファイルからの同時読み取りをサポートしています。
OSS-HDFS Reader は、単一ファイルからのマルチスレッドによる同時読み取りをサポートしていません。これは、単一ファイルに対する内部的なチャンク分割アルゴリズムによるものです。
オフライン書き込み
OSS-HDFS Writer を使用する際の注意事項は次のとおりです。
OSS-HDFS Writer は、text、orc、parquet 形式のファイルのみをサポートしています。ファイルの内容は、論理的な二次元テーブルである必要があります。
テキストファイルの場合、OSS-HDFS ファイルへの書き込みに使用する区切り文字が、Hive でテーブルを作成する際に使用した区切り文字と同じであることを確認してください。これにより、OSS-HDFS に書き込まれたデータが Hive テーブルのフィールドと正しく関連付けられます。
リアルタイム書き込み
リアルタイム書き込みをサポートしています。
Hudi 形式バージョン 0.14.x のリアルタイム書き込みをサポートしています。
実装プロセス
OSS-HDFS Writer の実装プロセスは次のとおりです。
指定されたパスに基づいて、OSS-HDFS ファイルシステムに一時フォルダが作成されます。
フォルダ名は path_random ルールに従って命名されます。
読み取ったファイルは、この一時フォルダに書き込まれます。
すべてのデータが書き込まれた後、ファイルは一時フォルダから指定の宛先フォルダに移動されます。システムはファイル名が一意であることを保証します。
一時フォルダは削除されます。OSS-HDFS への接続が中断された場合は、手動で一時フォルダと書き込まれたファイルを削除する必要があります。
サポートされるフィールドタイプ
オフライン読み取り
ParquetFile、ORCFile、TextFile、CsvFile のデータ型は、次の表に示すように、Data Integration がサポートする内部データ型に変換されます。
型カテゴリ | 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 は、TextFile、ORCFile、ParquetFile 形式のファイルを OSS-HDFS ファイルシステム内の指定されたパスに書き込みます。
サポートされているデータ型を次の表に示します。
型カテゴリ | OSS-HDFS データ型 |
整数 | TINYINT、SMALLINT、INT、BIGINT |
浮動小数点 | FLOAT、DOUBLE |
文字列 | CHAR、VARCHAR、STRING |
ブール値 | BOOLEAN |
日付と時刻 | DATE、TIMESTAMP |
データソースの追加
DataWorks で同期タスクを開発する前に、「データソース管理」の指示に従って、必要なデータソースを DataWorks に追加する必要があります。データソースを追加する際に、DataWorks コンソールでパラメーターの説明を表示して、各パラメーターの意味を理解できます。
データ同期タスクの開発
同期タスクを構成するためのエントリポイントと手順については、次の構成ガイドをご参照ください。
単一テーブルのオフライン同期タスクの構成
詳細については、「コードレス UI でタスクを構成」および「コードエディタでタスクを構成」をご参照ください。
コードエディタのすべてのパラメーターとスクリプトデモのリストについては、「付録:OSS-HDFS スクリプトデモとパラメーターの説明」をご参照ください。
単一テーブルのリアルタイム同期タスクの構成
詳細については、「単一テーブルのリアルタイム増分同期の構成」および「DataStudio でリアルタイム同期タスクを構成」をご参照ください。
データベース全体のリアルタイムでの完全同期および増分同期タスクの構成
詳細については、「データベース全体のリアルタイム同期タスクの構成」をご参照ください。
付録:OSS-HDFS スクリプトデモとパラメーターの説明
コードエディタを使用したバッチ同期タスクの構成
コードエディタを使用してバッチ同期タスクを構成する場合、統一されたスクリプト形式の要件に基づいて、スクリプト内で関連パラメーターを構成する必要があります。詳細については、「コードエディタでタスクを構成」をご参照ください。次の情報では、コードエディタを使用してバッチ同期タスクを構成する際に、データソースに対して構成する必要があるパラメーターについて説明します。
Reader スクリプトデモ
{
"type": "job",
"version": "2.0",
"steps": [
{
"stepType": "oss_hdfs",// プラグイン名
"parameter": {
"path": "",// 読み取るファイルのパス。
"datasource": "",// データソース
"column": [
{
"index": 0,// シリアル番号。インデックスは 0 から始まります。これは、ローカルテキストファイルの最初の列からデータが読み取られることを示します。
"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, // throttle が false に設定されている場合、mbps パラメーターは有効にならず、レート制限は適用されません。throttle が true に設定されている場合、レート制限が適用されます。
"mbps":"12"// レート制限。1 mbps = 1 MB/s。
}
},
"order": {
"hops": [
{
"from": "Reader",
"to": "Writer"
}
]
}
}Reader スクリプトのパラメーター
パラメーター | 説明 | 必須 | デフォルト値 |
path | 読み取るファイルのパス。
重要
| はい | なし |
fileFormat | ファイルタイプ。このパラメーターは text、orc、または parquet にのみ設定できます。 OSS-HDFS Reader はファイルタイプを自動的に検出し、対応する読み取りポリシーを使用します。データ同期の前に、OSS-HDFS Reader は指定されたパス内の同期対象のすべてのファイルの形式が fileFormat の値と同じであるかを確認します。形式が異なる場合、タスクは失敗します。 fileFormat の有効な値を以下に示します。
| はい | なし |
column | 読み取るフィールドのリスト。デフォルトでは、パラメーターを 次のように列フィールド情報を指定することもできます。パラメーターは次のように説明されます。
説明 ファイルデータ列 (index) または定数列 (value) のいずれかを構成できます。 | はい | なし |
fieldDelimiter | データの読み取りに使用するフィールド区切り文字。OSS-HDFS Reader が TextFile データを読み取る場合、フィールド区切り文字を指定する必要があります。このパラメーターを指定しない場合、デフォルト値のカンマ (,) が使用されます。OSS-HDFS Reader が ORC または PARQUET データを読み取る場合、フィールド区切り文字を指定する必要はありません。 | いいえ | , |
encoding | ファイルの読み取りに使用するエンコード形式。 | いいえ | utf-8 |
nullFormat | テキストファイルでは、標準の文字列を使用してヌルポインタを定義することはできません。Data Integration は、どの文字列が null 値を表すかを定義するために nullFormat パラメーターを提供します。 たとえば、 | いいえ | なし |
compress | gzip、bzip2、snappy 圧縮のみがサポートされています。 | いいえ | なし |
Writer スクリプトデモ
{
"type": "job",
"version": "2.0",// バージョン番号。
"steps": [
{
"stepType": "stream",
"parameter": {},
"name": "Reader",
"category": "reader"
},
{
"stepType": "oss_hdfs",// プラグイン名。
"parameter": {
"path": "",// OSS-HDFS ファイルシステムにファイルを格納するパス。
"fileName": "",// OSS-HDFS Writer によって書き込まれるファイルの名前。
"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"// テキストタイプ。
},
"name": "Writer",
"category": "writer"
}
],
"setting": {
"errorLimit": {
"record": ""// エラーレコード数。
},
"speed": {
"concurrent": 3,// ジョブの同時実行数。
"throttle": false // false はレート制限が適用されないことを示し、以下のレート制限速度は有効になりません。true はレート制限が適用されることを示します。
}
},
"order": {
"hops": [
{
"from": "Reader",
"to": "Writer"
}
]
}
}Writer スクリプトのパラメーター
パラメーター | 説明 | 必須 | デフォルト値 |
fileFormat | ファイルタイプ。このパラメーターは text、orc、または parquet にのみ設定できます。
| はい | なし |
path | データが格納される OSS-HDFS ファイルシステム内のパス。OSS-HDFS Writer は、同時実行数の構成に基づいて、`path` で指定されたディレクトリに複数のファイルを書き込みます。 Hive テーブルと関連付ける場合、OSS-HDFS 上の Hive テーブルのストレージパスを指定します。たとえば、Hive で設定されたデータウェアハウスのストレージパスを指定します。 | はい | なし |
fileName | OSS-HDFS Writer によって書き込まれるファイルの名前。実際の実行中、このファイル名にランダムなサフィックスが追加され、各スレッドの実際のファイル名が作成されます。 | はい | なし |
column | データが書き込まれるフィールド。列のサブセットへの書き込みはサポートされていません。 Hive のテーブルと関連付ける場合、テーブル内のすべてのフィールド名とフィールドタイプを指定する必要があります。`name` はフィールド名を指定し、`type` はフィールドタイプを指定します。 次のように列フィールド情報を指定できます。 | はい (fileFormat が parquet に設定されている場合、このパラメーターを指定する必要はありません。) | なし |
writeMode | OSS-HDFS Writer がデータを書き込む前のデータクリーンアップモード:
| はい | なし |
fieldDelimiter | OSS-HDFS Writer のフィールド区切り文字。 説明 単一文字の区切り文字のみがサポートされています。複数の文字を入力すると、実行時エラーが発生します。 | はい (fileFormat が parquet に設定されている場合、このパラメーターを指定する必要はありません。) | なし |
compress | OSS-HDFS ファイルの圧縮タイプ。このパラメーターを空のままにすると、圧縮は使用されません。 テキストファイルの場合、gzip および bzip2 圧縮タイプがサポートされています。 | いいえ | なし |
encoding | ファイルの書き込みに使用するエンコード形式。 | いいえ | utf-8 |
parquetSchema | このパラメーターは、Parquet ファイルを書き込む場合に必要です。オブジェクトファイルの構造を記述します。このパラメーターは、fileFormat が parquet に設定されている場合にのみ有効です。形式は次のとおりです。 設定項目は次のように説明されます。
説明 各行の設定はセミコロンで終了する必要があります。最終行もセミコロンで終了する必要があります。 以下に例を示します。 | いいえ | なし |