Shell、Python、Notebook などのノードでデータセットを使用して、NAS または OSS のデータを読み書きできます。また、個人開発環境インスタンスを作成する際に、データセットをストレージとして使用することもできます。
データセットの作成方法の詳細については、「データセットの管理」をご参照ください。
背景
DataWorks でデータを開発する際、データセット機能を使用して OSS および NAS に保存されているデータを読み書きできます。この機能は、データセットとそのバージョンの作成と管理をサポートします。バージョン管理により、データバージョンを追跡し、新しいバージョンに問題がある場合に以前のバージョンに迅速に復元できます。これにより、ビジネス運用がスムーズに実行されるようになります。
制限事項
データセットは、DataStudio の新しいバージョンでのみサポートされています。
リソースグループ: データ開発ノードのデータセットには、サーバーレスリソースグループ を使用してのみアクセスできます。
サポートされるオブジェクト: データセットは、Shell ノード、Python ノード、Notebook、および 個人開発環境 でのみサポートされています。各オブジェクトには最大 5 個のデータセットをマウントできます。
ストレージクラス: データセットは、Object Storage Service (OSS) と NFS プロトコルを使用する Apsara File Storage NAS (NAS) をサポートしています。
権限: データセットのマウントポイントが読み取り専用に設定されている場合、データセット内のフォルダやファイルを変更または削除することはできません。そうしようとすると、権限エラーが報告されます。
ノードでのデータセットの使用
このセクションでは、ノードでデータセットを使用する方法の例を示します。この例では、OSS データセットが DataWorks で作成されます。OSS パス oss://datasets-oss.oss-cn-shanghai.aliyuncs.com/dataset01/v1/ は、DataWorks データセットパス /mnt/data/dataset01 にマウントされます。その後、ノード内のデータセットに対して読み取りおよび書き込み操作を実行できます。
準備: データセットの作成
バケットの作成 または ファイルシステムの作成。
この例では OSS データセットを使用します。中国 (上海) リージョンに
datasets-ossという名前のバケットが作成され、/dataset01/v1フォルダが作成されます。この例では、
datasets-ossという名前の OSS データセットが作成されます。OSS パスoss://datasets-oss.oss-cn-shanghai.aliyuncs.com/dataset01/v1/は/mnt/data/dataset01にマウントされます。
1. ノードのデータセットを構成する
Shell または Python ノードの [デバッグ設定] で datasets-oss データセットを構成します。
公開する前に、データセットを [スケジューリング設定] に追加して同期する必要があります。
データセットを使用するには、ノードに少なくとも 0.5 コンピューティングユニット (CU) を割り当てる必要があります。

パラメーター | 説明 |
データセット | 現在のノードのコードでアクセスできるデータセットを構成します。
この例では、DataWorks で作成された OSS データセット |
マウントパス | 現在のノードのコードがデータセットにアクセスするために使用するパスを構成します。このフィールドには、データセット定義の [デフォルトのマウントパス] が自動的に入力されます。 重要 同じノードに複数のデータセットをマウントする場合、マウントパスを同じにすることはできません。 |
詳細設定 | オプション。OSS データの読み書きのためのツールとパラメーターを指定したり、NAS ファイルシステムの読み書きのための構成を JSON 形式で指定したりできます。
|
読み取り専用 | デフォルトでは、現在のノードのデータセット内のデータを読み書きできます。現在のノードに対してデータセットが読み取り専用に設定されている場合、現在のノードのコードでデータセットのマウントフォルダにデータを書き込むことはできません。コードで書き込み操作を実行すると、権限エラーが報告されます。 |
2. ノードでデータセットを使用する
このセクションでは、Shell ノードを例として使用します。OSS データセットを Shell ノードにアタッチすると、ローカルファイルを管理するのと同じ方法で Shell ノードコード内の OSS データを管理できます。次の例は、デフォルトの ossfs 2.0 ツールを使用して file01.txt ファイルを datasets-oss データセットのマウントパス /mnt/data/dataset01 にアップロードし、ファイルにデータを書き込む方法を示しています。
サンプルコード:
echo "Hello World" > /mnt/data/dataset01/file01.txt
ls -tl /mnt/data/dataset01
実行時にエラーメッセージ Job Submit Failed! submit job failed directly! Caused by: execute task failed, exception: [103:ILLEGAL_TASK]:Task with dataset need 0.5cu at least! が報告された場合、タスクに割り当てられた CU が不十分であることを示します。リソースグループの CU を調整し、少なくとも 0.5 CU を割り当ててください。
3. OSS にデータが書き込まれたことを確認する
2. ノードでデータセットを使用する のコードが実行されると、ファイルはデータセットのマウントパスに対応する OSS ストレージパスに自動的に書き込まれます。OSS ストレージパスに移動して、DataWorks ノードから書き込まれたファイルを表示できます。この例では、OSS データセット datasets-oss のマウントパス /mnt/data/dataset01 に対応するストレージパスは oss://datasets-oss.oss-cn-shanghai.aliyuncs.com/dataset01/v1/ です。次の図は、OSS パスに書き込まれたデータの例を示しています。

個人開発環境でのデータセットの使用
データセットを定義した後、個人開発環境インスタンスを作成または変更するときに、そのインスタンスにデータセットをマウントできます。その後、ターミナルまたは個人フォルダ内の Notebook からデータセットのデータを直接読み取ることができます。
準備: データセットの作成
バケットの作成 または ファイルシステムの作成。
この例では NAS データセットを使用します。中国 (上海) リージョンに
datasets-nasという名前の NAS データセットが作成されます。NAS パスnas://****.cn-shanghai.nas.aliyuncs.com/mnt/dataset02/v1/は/mnt/data/dataset02にマウントされます。
1. 個人開発環境のデータセットを構成する
個人開発環境インスタンス を作成し、作成した datasets-nas NAS データセットを選択します。

パラメーター | 説明 |
データセット | 現在のノードのコードでアクセスできるデータセットを構成します。個人開発環境インスタンス用に選択した VPC が NAS マウントポイントに接続できることを確認してください。 この例では、DataWorks で作成された NAS データセット |
マウントパス | 個人開発環境インスタンスのコードでデータセットにアクセスするためのパスを構成します。 この例では、NAS データセットパス 重要 同じ個人開発環境インスタンスに複数のデータセットをマウントする場合、マウントパスを同じにすることはできません。 |
詳細設定 | オプション。NFS プロトコルを使用する NAS ファイルシステムにアクセスするための構成 (nasOptions パラメーター) を JSON 形式で指定できます。次のコードは、デフォルトの構成を示しています。パラメーター値をカスタマイズするには、「NFS ファイルシステムを手動でマウントする」もご参照ください。 重要
|
読み取り専用 | デフォルトでは、現在のノードのデータセット内のデータを読み書きできます。現在のノードに対してデータセットが読み取り専用に設定されている場合、現在のノードのコードでデータセットのマウントフォルダにデータを書き込むことはできません。コードで書き込み操作を実行すると、権限エラーが報告されます。 |
2. Notebook でデータセットを読み取る
Data Studio ページの上部で、個人開発環境インスタンス に切り替え、Notebook を作成します。
Notebook で次の内容を構成します。
データセット内の指定されたパスにデータを書き込みます。
import os # 宛先パスとファイル名を定義します。 file_path = "/mnt/data/dataset02/file02.txt" # フォルダが存在することを確認します。フォルダが存在しない場合は作成します。 os.makedirs(os.path.dirname(file_path),exist_ok=True) # 内容を書き込みます。 content = "Hello World!" try: with open(file_path, "w", encoding="utf-8") as file: file.write(content) print(f"ファイルが正常に書き込まれました: {file_path}") except Exception as e: print(f"書き込みに失敗しました: {str(e)}")データセット内の指定されたパスからデータを読み取ります。
file_path = "/mnt/data/dataset02/file02.txt" with open(file_path, "r") as file: content = file.read() content
2 つの Python コードブロックを個別に実行します。
説明実行時には、Python カーネルを確認する必要があります。この例では Python 3.11.9 を使用します。

3. スケジューリングの構成
Notebook ノードの右側で [スケジューリング設定] をクリックし、データセット関連のオプションを追加します。パラメーター構成は、個人開発環境インスタンスを作成したときに設定したデータセットパラメーターと同じである必要があります。
詳細設定の例
データセットを構成するときに、詳細設定を行うことができます。関連するパラメーターを JSON 形式でカスタマイズできます:
ノードのデータセットを構成する場合、詳細設定を使用して OSS データの読み書きのためのツールとパラメーターを指定したり、NAS ファイルシステムの読み書きのための構成を JSON 形式で指定したりできます。
個人開発環境のデータセットを構成する場合、詳細パラメーターを設定して、NAS ファイルシステムの読み書きのための構成を JSON 形式で指定できます。
以下のセクションでは、構成例を示します:
ossfs 2.0 を使用した OSS のマウントとアクセス
ossfs 2.0 は、マウントによって OSS に高性能でアクセスするために設計されたクライアントです。優れたシーケンシャル読み取りおよび書き込み機能を提供し、OSS の高帯域幅を最大限に活用できます。AI トレーニングやデータ処理などの計算集約型アプリケーションなど、高いシーケンシャル読み取りおよび書き込みパフォーマンスを必要とするシナリオに適しています。これらのワークロードシナリオは、主にシーケンシャルおよびランダム読み取り、シーケンシャル書き込み (追加のみ) を含み、完全な POSIX セマンティクスを必要としません。
で、詳細パラメーターを設定できます。複数のオプションはカンマ (,) で区切ります。詳細パラメーターおよびその他のオプションの詳細については、「ossfs 2.0 マウントオプション」をご参照ください。以下は、一般的なシナリオの例です:
タスク中にデータソースが変更されない: 読み取りプロセス中に読み取られるファイルが変更されない場合、長いキャッシュ時間を構成してメタデータリクエストの数を減らすことができます。典型的なシナリオは、既存のファイルのバッチを読み取り、処理後に新しいファイルのバッチを生成することです。
{"mountOssType":"ossfs", "attr_timeout": "7200"}高速な読み取りと書き込み: 短いメタデータキャッシュ時間を使用して、キャッシュ効率とファイルデータの適時性のバランスを取ります。
{"mountOssType":"ossfs", "attr_timeout": "3", "negative_timeout":"0"}分散タスクの読み取りと書き込みの一貫性: デフォルトでは、ossfs はメタデータキャッシュに基づいてファイルデータを更新します。次の構成を使用して、複数のノード間で同期されたビューを実現します。{ "mountOssType":"ossfs","negative_timeout": "0", "close_to_open":"false"}
{ "mountOssType":"ossfs","negative_timeout": "0", "close_to_open":"false"}同時に開かれるファイルが多すぎて OOM エラーが発生する: タスクの同時実行性が高く、多くのファイルが同時に開かれると、メモリ不足 (OOM) の問題が発生する可能性があります。次の構成を使用して、メモリの圧迫を緩和できます。
{"mountOssType":"ossfs","readdirplus": "false", "inode_cache_eviction_threshold":"300000"}
ossfs 1.0 を使用した OSS のマウントとアクセス
ossfs 1.0 を使用すると、OSS バケットを Linux システム上のローカルファイルシステムとしてマウントできます。ossfs 2.0 と比較して、ossfs 1.0 はより包括的なファイル操作サポートを提供します。ossfs 2.0 でディレクトリをマウントした後にファイル操作の非互換性の問題が発生した場合は、ossfs 1.0 の使用を試すことができます。
ossfs 1.0 でのマウントに必要なパラメーターの詳細については、「ossfs 1.0 マウントオプション」をご参照ください。
JindoFuse を使用した OSS のマウントとアクセス
JindoFuse コンポーネントを使用して、OSS データセットをコンテナー内の指定されたパスにマウントできます。このツールは、次のシナリオに適しています:
OSS データをローカルデータセットであるかのように読み取りたい場合、またはデータセットが小さく、JindoFuse のローカルキャッシュを効果的に使用して高速化できる場合。
OSS にデータを書き込む必要がある場合。
で、詳細パラメーターを設定できます。複数の構成はカンマ (,) で区切ります。以下は構成例です。パラメーターの説明とその他のパラメーター構成については、「JindoFuse ユーザーガイド」および「JindoFuse を使用したデータのマウントとアクセス」をご参照ください。
現在、DataWorks は key=value 形式のパラメーターのみをサポートしています。
{
"mountOssType":"jindofuse",
"fs.oss.download.thread.concurrency": "2 × CPU コア数",
"fs.oss.upload.thread.concurrency": "2 × CPU コア数",
"attr_timeout": 3,
"entry_timeout": 0,
"negative_timeout": 0
}NAS データセットの使用
追加したデータセットが NAS データセットの場合、NFS プロトコルを使用する NAS ファイルシステムにアクセスするための構成 (nasOptions パラメーター) を指定できます。次のコードは、デフォルトの構成を示しています。パラメーター値をカスタマイズするには、「NFS ファイルシステムを手動でマウントする」をご参照ください。
NFS プロトコルを使用する NAS ファイルシステムのみマウントできます。
NAS でサポートされている詳細設定パラメーターは
nasOptionsのみです。NAS ファイルシステムをマウントするためのパラメーターをカスタマイズするには、詳細設定を{"nasOptions":"<ParameterName1=ParameterValue>,<ParameterName2=ParameterValue>,..."}に設定します。
{"nasOptions":"vers=3,nolock,proto=tcp,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport"}