الوصول إلى البيانات من تخزين سحابة Azure أثناء التطوير التفاعلي

ينطبق على: Python SDK azure-ai-ml v2 (الحالي)

يبدأ مشروع التعلم الآلي عادة بتحليل البيانات الاستكشافية (EDA)، والمعالجة المسبقة للبيانات (التنظيف، وهندسة الميزات)، ويتضمن إنشاء نماذج أولية لنماذج التعلم الآلي للتحقق من صحة الفرضيات. مرحلة مشروع النماذج الأولية هذه تفاعلية للغاية في طبيعتها، وتفسح المجال للتطوير في دفتر ملاحظات Jupyter، أو IDE مع وحدة تحكم Python تفاعلية. في هذا المقال، ستتعلم كيفية إجراء ما يلي:

  • الوصول إلى البيانات من Azure التعلم الآلي Datastores URI كما لو كان نظام ملفات.
  • تجسيد البيانات في Pandas باستخدام mltable مكتبة Python.
  • تحقيق أصول بيانات Azure التعلم الآلي في Pandas باستخدام mltable مكتبة Python.
  • تحقيق البيانات من خلال تنزيل صريح باستخدام azcopy الأداة المساعدة.

المتطلبات الأساسية

تلميح

توضح الإرشادات الواردة في هذه المقالة الوصول إلى البيانات أثناء التطوير التفاعلي. ينطبق على أي مضيف يمكنه تشغيل جلسة عمل Python. يمكن أن يشمل ذلك جهازك المحلي، وجهاز ظاهري سحابي، ومساحة تعليمة GitHub البرمجية، وما إلى ذلك. نوصي باستخدام مثيل حساب Azure التعلم الآلي - محطة عمل سحابية مدارة بالكامل ومكونة مسبقا. لمزيد من المعلومات، راجع إنشاء مثيل حساب Azure التعلم الآلي.

هام

تأكد من تثبيت أحدث azure-fsspec مكتبات python في mltable بيئة python الخاصة بك:

pip install -U azureml-fsspec mltable

الوصول إلى البيانات من URI لمخزن البيانات، مثل نظام الملفات

مخزن بيانات Azure التعلم الآلي هو مرجع إلى حساب تخزين Azure موجود. تشمل فوائد إنشاء مخزن البيانات واستخدامه ما يلي:

  • واجهة برمجة تطبيقات شائعة وسهلة الاستخدام للتفاعل مع أنواع تخزين مختلفة (Blob/Files/ADLS).
  • اكتشاف سهل لمخازن البيانات المفيدة في عمليات الفريق.
  • دعم الوصول المستند إلى بيانات الاعتماد (على سبيل المثال، رمز SAS المميز) والهوية المستندة إلى (استخدام معرف Microsoft Entra أو هوية Manged)، للوصول إلى البيانات.
  • للوصول المستند إلى بيانات الاعتماد، يتم تأمين معلومات الاتصال، لإبطال تعرض المفتاح في البرامج النصية.
  • استعرض البيانات والصق معرفات URI لمخزن البيانات في واجهة مستخدم Studio.

URI مخزن البيانات هو معرف مورد موحد، وهو مرجع إلى موقع تخزين (مسار) على حساب تخزين Azure الخاص بك. يحتوي URI لمخزن البيانات على هذا التنسيق:

# Azure Machine Learning workspace details:
subscription = '<subscription_id>'
resource_group = '<resource_group>'
workspace = '<workspace>'
datastore_name = '<datastore>'
path_on_datastore = '<path>'

# long-form Datastore uri format:
uri = f'azureml://subscriptions/{subscription}/resourcegroups/{resource_group}/workspaces/{workspace}/datastores/{datastore_name}/paths/{path_on_datastore}'.

تعد معرفات URI لمخزن البيانات هذه تنفيذا معروفا لمواصفات نظام الملفات (fsspec): واجهة pythonic موحدة لأنظمة الملفات المحلية والبايتات البعيدة والمضمنة. يمكنك تثبيت الحزمة azureml-fsspec وحزمة التبعية azureml-dataprep الخاصة بها. بعد ذلك، يمكنك استخدام تنفيذ Azure التعلم الآلي Datastorefsspec.

يعالج تنفيذ Azure التعلم الآلي Datastore fsspec تلقائيا بيانات الاعتماد/الهوية التي يستخدمها مخزن بيانات Azure التعلم الآلي. يمكنك تجنب كل من التعرض لمفتاح الحساب في البرامج النصية الخاصة بك، وإجراءات تسجيل الدخول الإضافية، على مثيل حساب.

على سبيل المثال، يمكنك استخدام عناوين URL لمخزن البيانات مباشرة في Pandas. يوضح هذا المثال كيفية قراءة ملف CSV:

import pandas as pd

df = pd.read_csv("azureml://subscriptions/<subid>/resourcegroups/<rgname>/workspaces/<workspace_name>/datastores/<datastore_name>/paths/<folder>/<filename>.csv")
df.head()

تلميح

بدلا من تذكر تنسيق URI لمخزن البيانات، يمكنك نسخ ولصق URI لمخزن البيانات من واجهة مستخدم Studio باستخدام الخطوات التالية:

  1. حدد Data من القائمة اليسرى، ثم حدد علامة التبويب Datastores .
  2. حدد اسم مخزن البيانات، ثم استعرض.
  3. ابحث عن الملف/المجلد الذي تريد قراءته في Pandas، وحدد علامة الحذف (...) بجواره. حدد نسخ URI من القائمة. يمكنك تحديد Datastore URI للنسخ إلى دفتر الملاحظات/البرنامج النصي. Screenshot highlighting the copy of the datastore URI.

يمكنك أيضا إنشاء مثيل لنظام ملفات Azure التعلم الآلي، لمعالجة الأوامر الشبيهة بنظام الملفات - على سبيل المثال ls، glob، ، exists. open

  • يسرد ls() الأسلوب الملفات في دليل معين. يمكنك استخدام ls()، ls(.)، ls (<<folder_level_1>/<folder_level_2>) لسرد الملفات. نحن ندعم كلا من '.' و'..'، في المسارات النسبية.
  • glob() يدعم الأسلوب globbing '*' و'**'.
  • يقوم exists() الأسلوب بإرجاع قيمة منطقية تشير إلى ما إذا كان ملف محدد موجودا في الدليل الجذر الحالي.
  • يقوم open() الأسلوب بإرجاع كائن يشبه الملف، والذي يمكن تمريره إلى أي مكتبة أخرى تتوقع العمل مع ملفات python. يمكن للتعليمات البرمجية أيضا استخدام هذا الكائن، كما لو كان كائن ملف python عاديا. تحترم هذه الكائنات التي تشبه الملف استخدام with السياقات، كما هو موضح في هذا المثال:
from azureml.fsspec import AzureMachineLearningFileSystem

# instantiate file system using following URI
fs = AzureMachineLearningFileSystem('azureml://subscriptions/<subid>/resourcegroups/<rgname>/workspaces/<workspace_name>/datastore*s*/datastorename')

fs.ls() # list folders/files in datastore 'datastorename'

# output example:
# folder1
# folder2
# file3.csv

# use an open context
with fs.open('./folder1/file1.csv') as f:
    # do some process
    process_file(f)

تحميل الملفات عبر AzureMachineLearningFileSystem

from azureml.fsspec import AzureMachineLearningFileSystem
# instantiate file system using following URI
fs = AzureMachineLearningFileSystem('azureml://subscriptions/<subid>/resourcegroups/<rgname>/workspaces/<workspace_name>/datastores/<datastorename>/paths/')

# you can specify recursive as False to upload a file
fs.upload(lpath='data/upload_files/crime-spring.csv', rpath='data/fsspec', recursive=False, **{'overwrite': 'MERGE_WITH_OVERWRITE'})

# you need to specify recursive as True to upload a folder
fs.upload(lpath='data/upload_folder/', rpath='data/fsspec_folder', recursive=True, **{'overwrite': 'MERGE_WITH_OVERWRITE'})

lpath هو المسار المحلي، وهو rpath المسار البعيد. إذا لم تكن المجلدات التي تحددها موجودة rpath بعد، فسنقوم بإنشاء المجلدات لك.

نحن ندعم ثلاثة أوضاع "الكتابة فوق":

  • APPEND: إذا كان هناك ملف بنفس الاسم في مسار الوجهة، فإن هذا يحافظ على الملف الأصلي
  • FAIL_ON_FILE_CONFLICT: إذا كان هناك ملف يحمل نفس الاسم في مسار الوجهة، يؤدي هذا إلى حدوث خطأ
  • MERGE_WITH_OVERWRITE: إذا كان هناك ملف بنفس الاسم في مسار الوجهة، فإن هذا يؤدي إلى الكتابة فوق هذا الملف الموجود بالملف الجديد

تنزيل الملفات عبر AzureMachineLearningFileSystem

# you can specify recursive as False to download a file
# downloading overwrite option is determined by local system, and it is MERGE_WITH_OVERWRITE
fs.download(rpath='data/fsspec/crime-spring.csv', lpath='data/download_files/, recursive=False)

# you need to specify recursive as True to download a folder
fs.download(rpath='data/fsspec_folder', lpath='data/download_folder/', recursive=True)

الأمثلة

توضح هذه الأمثلة استخدام مواصفات نظام الملفات في السيناريوهات الشائعة.

قراءة ملف CSV واحد في Pandas

يمكنك قراءة ملف CSV واحد في Pandas كما هو موضح:

import pandas as pd

df = pd.read_csv("azureml://subscriptions/<subid>/resourcegroups/<rgname>/workspaces/<workspace_name>/datastores/<datastore_name>/paths/<folder>/<filename>.csv")

قراءة مجلد من ملفات CSV في Pandas

لا يدعم أسلوب Pandas read_csv() قراءة مجلد من ملفات CSV. يجب عليك glob csv paths، وتسلسلها إلى إطار بيانات باستخدام أسلوب Pandas concat() . يوضح نموذج التعليمات البرمجية التالي كيفية تحقيق هذا التسلسل باستخدام نظام ملفات Azure التعلم الآلي:

import pandas as pd
from azureml.fsspec import AzureMachineLearningFileSystem

# define the URI - update <> placeholders
uri = 'azureml://subscriptions/<subid>/resourcegroups/<rgname>/workspaces/<workspace_name>/datastores/<datastore_name>'

# create the filesystem
fs = AzureMachineLearningFileSystem(uri)

# append csv files in folder to a list
dflist = []
for path in fs.glob('/<folder>/*.csv'):
    with fs.open(path) as f:
        dflist.append(pd.read_csv(f))

# concatenate data frames
df = pd.concat(dflist)
df.head()

قراءة ملفات CSV في Dask

يوضح هذا المثال كيفية قراءة ملف CSV في إطار بيانات Dask:

import dask.dd as dd

df = dd.read_csv("azureml://subscriptions/<subid>/resourcegroups/<rgname>/workspaces/<workspace_name>/datastores/<datastore_name>/paths/<folder>/<filename>.csv")
df.head()

قراءة مجلد من ملفات parquet في Pandas

كجزء من عملية ETL، عادة ما تتم كتابة ملفات Parquet إلى مجلد، والذي يمكنه بعد ذلك إرسال ملفات ذات صلة ب ETL مثل التقدم والتثبيت وما إلى ذلك. يوضح هذا المثال الملفات التي تم إنشاؤها من عملية ETL (الملفات التي تبدأ ب _) والتي تنتج بعد ذلك ملف parquet من البيانات.

Screenshot showing the parquet etl process.

في هذه السيناريوهات، ستقرأ فقط ملفات parquet في المجلد، وتتجاهل ملفات عملية ETL. يوضح نموذج التعليمات البرمجية هذا كيف يمكن لأنماط glob قراءة ملفات parquet فقط في مجلد:

import pandas as pd
from azureml.fsspec import AzureMachineLearningFileSystem

# define the URI - update <> placeholders
uri = 'azureml://subscriptions/<subid>/resourcegroups/<rgname>/workspaces/<workspace_name>/datastores/<datastore_name>'

# create the filesystem
fs = AzureMachineLearningFileSystem(uri)

# append parquet files in folder to a list
dflist = []
for path in fs.glob('/<folder>/*.parquet'):
    with fs.open(path) as f:
        dflist.append(pd.read_parquet(f))

# concatenate data frames
df = pd.concat(dflist)
df.head()

الوصول إلى البيانات من نظام ملفات Azure Databricks (dbfs)

تحتوي مواصفات نظام الملفات (fsspec) على مجموعة من التطبيقات المعروفة، بما في ذلك نظام ملفات Databricks (dbfs).

للوصول إلى البيانات التي dbfs تحتاج إليها:

باستخدام هذه القيم، يجب إنشاء متغير بيئة على مثيل الحساب الخاص بك للرمز المميز PAT:

export ADB_PAT=<pat_token>

يمكنك بعد ذلك الوصول إلى البيانات في Pandas كما هو موضح في هذا المثال:

import os
import pandas as pd

pat = os.getenv(ADB_PAT)
path_on_dbfs = '<absolute_path_on_dbfs>' # e.g. /folder/subfolder/file.csv

storage_options = {
    'instance':'adb-<some-number>.<two digits>.azuredatabricks.net', 
    'token': pat
}

df = pd.read_csv(f'dbfs://{path_on_dbfs}', storage_options=storage_options)

قراءة الصور باستخدام pillow

from PIL import Image
from azureml.fsspec import AzureMachineLearningFileSystem

# define the URI - update <> placeholders
uri = 'azureml://subscriptions/<subid>/resourcegroups/<rgname>/workspaces/<workspace_name>/datastores/<datastore_name>'

# create the filesystem
fs = AzureMachineLearningFileSystem(uri)

with fs.open('/<folder>/<image.jpeg>') as f:
    img = Image.open(f)
    img.show()

مثال على مجموعة البيانات المخصصة PyTorch

في هذا المثال، يمكنك إنشاء مجموعة بيانات مخصصة PyTorch لمعالجة الصور. نفترض وجود ملف تعليقات توضيحية (بتنسيق CSV)، مع هذه البنية الإجمالية:

image_path, label
0/image0.png, label0
0/image1.png, label0
1/image2.png, label1
1/image3.png, label1
2/image4.png, label2
2/image5.png, label2

تخزن المجلدات الفرعية هذه الصور، وفقا لتسمياتها:

/
└── 📁images
    ├── 📁0
    │   ├── 📷image0.png
    │   └── 📷image1.png
    ├── 📁1
    │   ├── 📷image2.png
    │   └── 📷image3.png
    └── 📁2
        ├── 📷image4.png
        └── 📷image5.png

يجب أن تنفذ فئة مجموعة بيانات PyTorch المخصصة ثلاث وظائف: __init__و __len__و __getitem__، كما هو موضح هنا:

import os
import pandas as pd
from PIL import Image
from torch.utils.data import Dataset

class CustomImageDataset(Dataset):
    def __init__(self, filesystem, annotations_file, img_dir, transform=None, target_transform=None):
        self.fs = filesystem
        f = filesystem.open(annotations_file)
        self.img_labels = pd.read_csv(f)
        f.close()
        self.img_dir = img_dir
        self.transform = transform
        self.target_transform = target_transform

    def __len__(self):
        return len(self.img_labels)

    def __getitem__(self, idx):
        img_path = os.path.join(self.img_dir, self.img_labels.iloc[idx, 0])
        f = self.fs.open(img_path)
        image = Image.open(f)
        f.close()
        label = self.img_labels.iloc[idx, 1]
        if self.transform:
            image = self.transform(image)
        if self.target_transform:
            label = self.target_transform(label)
        return image, label

يمكنك بعد ذلك إنشاء مثيل لمجموعة البيانات كما هو موضح هنا:

from azureml.fsspec import AzureMachineLearningFileSystem
from torch.utils.data import DataLoader

# define the URI - update <> placeholders
uri = 'azureml://subscriptions/<subid>/resourcegroups/<rgname>/workspaces/<workspace_name>/datastores/<datastore_name>'

# create the filesystem
fs = AzureMachineLearningFileSystem(uri)

# create the dataset
training_data = CustomImageDataset(
    filesystem=fs,
    annotations_file='/annotations.csv', 
    img_dir='/<path_to_images>/'
)

# Prepare your data for training with DataLoaders
train_dataloader = DataLoader(training_data, batch_size=64, shuffle=True)

تجسيد البيانات في Pandas باستخدام mltable المكتبة

mltable يمكن أن تساعد المكتبة أيضا في الوصول إلى البيانات في التخزين السحابي. قراءة البيانات في Pandas مع mltable هذا التنسيق العام:

import mltable

# define a path or folder or pattern
path = {
    'file': '<supported_path>'
    # alternatives
    # 'folder': '<supported_path>'
    # 'pattern': '<supported_path>'
}

# create an mltable from paths
tbl = mltable.from_delimited_files(paths=[path])
# alternatives
# tbl = mltable.from_parquet_files(paths=[path])
# tbl = mltable.from_json_lines_files(paths=[path])
# tbl = mltable.from_delta_lake(paths=[path])

# materialize to Pandas
df = tbl.to_pandas_dataframe()
df.head()

المسارات المدعومة

mltable تدعم المكتبة قراءة البيانات الجدولية من أنواع مسارات مختلفة:

Location الأمثلة
مسار على الكمبيوتر المحلي ./home/username/data/my_data
مسار على خادم http(s) عام https://raw.githubusercontent.com/pandas-dev/pandas/main/doc/data/titanic.csv
مسار على Azure Storage wasbs://<container_name>@<account_name>.blob.core.windows.net/<path>
abfss://<file_system>@<account_name>.dfs.core.windows.net/<path>
مخزن بيانات Azure التعلم الآلي طويل النماذج azureml://subscriptions/<subid>/resourcegroups/<rgname>/workspaces/<wsname>/datastores/<name>/paths/<path>

إشعار

mltableيقوم بتمرير بيانات اعتماد المستخدم للمسارات على Azure Storage ومخازن بيانات Azure التعلم الآلي. إذا لم يكن لديك إذن للوصول إلى البيانات على التخزين الأساسي، فلا يمكنك الوصول إلى البيانات.

الملفات والمجلدات والقوالب

mltable يدعم القراءة من:

  • ملف (ملفات) - على سبيل المثال: abfss://<file_system>@<account_name>.dfs.core.windows.net/my-csv.csv
  • folder(s) - على سبيل المثال abfss://<file_system>@<account_name>.dfs.core.windows.net/my-folder/
  • نمط (أنماط) glob - على سبيل المثال abfss://<file_system>@<account_name>.dfs.core.windows.net/my-folder/*.csv
  • مجموعة من الملفات والمجلدات و/أو أنماط الكآبة

mltable تسمح المرونة بتجسيد البيانات، في إطار بيانات واحد، من مجموعة من موارد التخزين المحلية والسحابات، ومجموعات من الملفات/المجلد/globs. على سبيل المثال:

path1 = {
    'file': 'abfss://filesystem@account1.dfs.core.windows.net/my-csv.csv'
}

path2 = {
    'folder': './home/username/data/my_data'
}

path3 = {
    'pattern': 'abfss://filesystem@account2.dfs.core.windows.net/folder/*.csv'
}

tbl = mltable.from_delimited_files(paths=[path1, path2, path3])

تنسيقات الملفات المعتمدة

mltable يدعم تنسيقات الملفات التالية:

  • نص محدد (على سبيل المثال: ملفات CSV): mltable.from_delimited_files(paths=[path])
  • Parquet: mltable.from_parquet_files(paths=[path])
  • دلتا: mltable.from_delta_lake(paths=[path])
  • تنسيق خطوط JSON: mltable.from_json_lines_files(paths=[path])

الأمثلة

قراءة ملف CSV

قم بتحديث العناصر النائبة (<>) في مقتطف التعليمات البرمجية هذا بتفاصيلك المحددة:

import mltable

path = {
    'file': 'abfss://<filesystem>@<account>.dfs.core.windows.net/<folder>/<file_name>.csv'
}

tbl = mltable.from_delimited_files(paths=[path])
df = tbl.to_pandas_dataframe()
df.head()

قراءة ملفات parquet في مجلد

يوضح هذا المثال كيفية mltable استخدام أنماط glob - مثل أحرف البدل - للتأكد من قراءة ملفات parquet فقط.

قم بتحديث العناصر النائبة (<>) في مقتطف التعليمات البرمجية هذا بتفاصيلك المحددة:

import mltable

path = {
    'pattern': 'abfss://<filesystem>@<account>.dfs.core.windows.net/<folder>/*.parquet'
}

tbl = mltable.from_parquet_files(paths=[path])
df = tbl.to_pandas_dataframe()
df.head()

قراءة أصول البيانات

يوضح هذا القسم كيفية الوصول إلى أصول بيانات Azure التعلم الآلي في Pandas.

أصل الجدول

إذا قمت مسبقا بإنشاء أصل جدول في Azure التعلم الآلي (أو mltableV1TabularDataset)، يمكنك تحميل أصل الجدول هذا في Pandas باستخدام هذه التعليمة البرمجية:

import mltable
from azure.ai.ml import MLClient
from azure.identity import DefaultAzureCredential

ml_client = MLClient.from_config(credential=DefaultAzureCredential())
data_asset = ml_client.data.get(name="<name_of_asset>", version="<version>")

tbl = mltable.load(f'azureml:/{data_asset.id}')
df = tbl.to_pandas_dataframe()
df.head()

أصل الملف

إذا قمت بتسجيل أصل ملف (ملف CSV، على سبيل المثال)، يمكنك قراءة هذا الأصل في إطار بيانات Pandas باستخدام هذه التعليمة البرمجية:

import mltable
from azure.ai.ml import MLClient
from azure.identity import DefaultAzureCredential

ml_client = MLClient.from_config(credential=DefaultAzureCredential())
data_asset = ml_client.data.get(name="<name_of_asset>", version="<version>")

path = {
    'file': data_asset.path
}

tbl = mltable.from_delimited_files(paths=[path])
df = tbl.to_pandas_dataframe()
df.head()

أصل المجلد

إذا قمت بتسجيل أصل مجلد (uri_folder أو V1 FileDataset) - على سبيل المثال، مجلد يحتوي على ملف CSV - يمكنك قراءة هذا الأصل في إطار بيانات Pandas باستخدام هذه التعليمة البرمجية:

import mltable
from azure.ai.ml import MLClient
from azure.identity import DefaultAzureCredential

ml_client = MLClient.from_config(credential=DefaultAzureCredential())
data_asset = ml_client.data.get(name="<name_of_asset>", version="<version>")

path = {
    'folder': data_asset.path
}

tbl = mltable.from_delimited_files(paths=[path])
df = tbl.to_pandas_dataframe()
df.head()

ملاحظة حول قراءة ومعالجة وحدات تخزين البيانات الكبيرة باستخدام Pandas

تلميح

لم يتم تصميم Pandas للتعامل مع مجموعات البيانات الكبيرة - يمكن ل Pandas معالجة البيانات التي يمكن أن تتناسب مع ذاكرة مثيل الحساب فقط.

بالنسبة لمجموعات البيانات الكبيرة، نوصي باستخدام Azure التعلم الآلي Spark المدار. يوفر هذا واجهة برمجة تطبيقات PySpark Pandas.

قد تحتاج إلى التكرار بسرعة على مجموعة فرعية أصغر من مجموعة بيانات كبيرة قبل التوسع إلى مهمة بعيدة غير متزامنة. mltable يوفر وظائف مدمجة للحصول على عينات من البيانات الكبيرة باستخدام أسلوب take_random_sample :

import mltable

path = {
    'file': 'https://raw.githubusercontent.com/pandas-dev/pandas/main/doc/data/titanic.csv'
}

tbl = mltable.from_delimited_files(paths=[path])
# take a random 30% sample of the data
tbl = tbl.take_random_sample(probability=.3)
df = tbl.to_pandas_dataframe()
df.head()

يمكنك أيضا أخذ مجموعات فرعية من البيانات الكبيرة باستخدام هذه العمليات:

تنزيل البيانات باستخدام azcopy الأداة المساعدة

azcopy استخدم الأداة المساعدة لتنزيل البيانات إلى SSD المحلي لمضيفك (الجهاز المحلي، الجهاز الظاهري السحابي، Azure التعلم الآلي Compute Instance)، في نظام الملفات المحلي. azcopy الأداة المساعدة، المثبتة مسبقا على مثيل حساب Azure التعلم الآلي، ستتعامل مع ذلك. إذا لم تستخدم مثيل حساب Azure التعلم الآلي أو Data Science Virtual Machine (DSVM)، فقد تحتاج إلى تثبيت azcopy. راجع azcopy لمزيد من المعلومات.

تنبيه

لا نوصي بتنزيل البيانات في /home/azureuser/cloudfiles/code الموقع على مثيل حساب. تم تصميم هذا الموقع لتخزين البيانات الاصطناعية لدفتر الملاحظات والرمز، وليس البيانات. ستتحمل قراءة البيانات من هذا الموقع حملا كبيرا في الأداء عند التدريب. بدلا من ذلك، نوصي بتخزين home/azureuserالبيانات في ، وهو SSD المحلي لعقدة الحساب.

افتح محطة طرفية وأنشئ دليلا جديدا، على سبيل المثال:

mkdir /home/azureuser/data

تسجيل الدخول إلى azcopy باستخدام:

azcopy login

بعد ذلك، يمكنك نسخ البيانات باستخدام عنوان URI للتخزين

SOURCE=https://<account_name>.blob.core.windows.net/<container>/<path>
DEST=/home/azureuser/data
azcopy cp $SOURCE $DEST

الخطوات التالية