Udostępnij za pośrednictwem


Uzyskiwanie dostępu do danych z magazynu w chmurze platformy Azure podczas programowania interakcyjnego

DOTYCZY: Zestaw PYTHON SDK azure-ai-ml w wersji 2 (bieżąca)

Projekt uczenia maszynowego zwykle rozpoczyna się od eksploracyjnej analizy danych (EDA), przetwarzania wstępnego danych (czyszczenia, inżynierii cech) i obejmuje tworzenie prototypów modeli uczenia maszynowego w celu zweryfikowania hipotez. Ta faza tworzenia prototypów projektu jest wysoce interaktywna i nadaje się do programowania w notesie Jupyter lub w środowisku IDE z interaktywną konsolą języka Python. Z tego artykułu dowiesz się, jak wykonywać następujące działania:

  • Uzyskiwanie dostępu do danych z identyfikatora URI magazynu danych usługi Azure Machine Learning w taki sposób, jakby był to system plików.
  • Materializuj dane do biblioteki Pandas przy użyciu mltable biblioteki języka Python.
  • Materializuj zasoby danych usługi Azure Machine Learning do biblioteki Pandas przy użyciu mltable biblioteki języka Python.
  • Materializuj dane za pomocą jawnego pobierania za azcopy pomocą narzędzia .

Wymagania wstępne

Napiwek

Wskazówki zawarte w tym artykule opisują dostęp do danych podczas opracowywania interakcyjnego. Dotyczy to dowolnego hosta, który może uruchomić sesję języka Python. Może to obejmować maszynę lokalną, maszynę wirtualną w chmurze, usługę GitHub Codespace itp. Zalecamy użycie wystąpienia obliczeniowego usługi Azure Machine Learning — w pełni zarządzanej i wstępnie skonfigurowanej stacji roboczej w chmurze. Aby uzyskać więcej informacji, odwiedź stronę Tworzenie wystąpienia obliczeniowego usługi Azure Machine Learning.

Ważne

Upewnij się, że masz zainstalowane najnowsze azure-fsspecbiblioteki , mltablei azure-ai-ml python w środowisku języka Python:

pip install -U azureml-fsspec==1.3.1 mltable azure-ai-ml

Najnowsza azure-fsspec wersja pakietu może potencjalnie ulec zmianie w czasie. Aby uzyskać więcej informacji na temat azure-fsspec pakietu, odwiedź ten zasób.

Uzyskiwanie dostępu do danych z identyfikatora URI magazynu danych, takiego jak system plików

Magazyn danych usługi Azure Machine Learning to odwołanie do istniejącego konta usługi Azure Storage. Zalety tworzenia i używania magazynu danych obejmują:

  • Typowy, łatwy w użyciu interfejs API do interakcji z różnymi typami magazynu (Blob/Files/ADLS).
  • Łatwe odnajdywanie przydatnych magazynów danych w operacjach zespołowych.
  • Obsługa dostępu opartego na poświadczeniach (na przykład tokenu SAS) i opartego na tożsamości (użyj identyfikatora Microsoft Entra ID lub tożsamości manged) w celu uzyskania dostępu do danych.
  • W przypadku dostępu opartego na poświadczeniach informacje o połączeniu są zabezpieczone w celu unieważnienia ujawnienia klucza w skryptach.
  • Przeglądanie danych i wklejanie identyfikatorów URI magazynu danych w interfejsie użytkownika programu Studio.

Identyfikator URI magazynu danych to jednolity identyfikator zasobu, który jest odwołaniem do lokalizacji magazynu (ścieżki) na koncie usługi Azure Storage. Identyfikator URI magazynu danych ma następujący format:

# 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}'.

Te identyfikatory URI magazynu danych to znana implementacja specyfikacji systemu plików (fsspec): ujednolicony interfejs języka Python dla lokalnych, zdalnych i osadzonych systemów plików oraz magazynu bajtów. Najpierw użyj narzędzia, aby zainstalować azureml-fsspec pakiet i jego pakiet zależności azureml-dataprep . Następnie możesz użyć implementacji magazynu fsspec danych usługi Azure Machine Learning.

Implementacja magazynu fsspec danych usługi Azure Machine Learning automatycznie obsługuje przekazywanie poświadczeń/tożsamości używane przez magazyn danych usługi Azure Machine Learning. Można uniknąć ujawnienia klucza konta w skryptach i dodatkowych procedur logowania w wystąpieniu obliczeniowym.

Możesz na przykład bezpośrednio użyć identyfikatorów URI magazynu danych w bibliotece Pandas. W tym przykładzie pokazano, jak odczytać plik 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()

Napiwek

Aby uniknąć zapamiętowania formatu identyfikatora URI magazynu danych, możesz skopiować i wkleić identyfikator URI magazynu danych z poziomu interfejsu użytkownika programu Studio, wykonując następujące kroki:

  1. Wybierz pozycję Dane z menu po lewej stronie, a następnie wybierz kartę Magazyny danych.
  2. Wybierz nazwę magazynu danych, a następnie pozycję Przeglądaj.
  3. Znajdź plik/folder, który chcesz odczytać w bibliotece Pandas, i wybierz obok niego wielokropek (...). Wybierz pozycję Kopiuj identyfikator URI z menu. Możesz wybrać identyfikator URI magazynu danych, aby skopiować go do notesu/skryptu. Zrzut ekranu przedstawiający kopię identyfikatora URI magazynu danych.

Możesz również utworzyć wystąpienie systemu plików usługi Azure Machine Learning, aby obsługiwać polecenia podobne do systemu plików — na przykład ls, , globexists, open.

  • Metoda ls() wyświetla listę plików w określonym katalogu. Do wyświetlania listy plików można użyć ls(), ls(.), ls (<<folder_level_1>/<folder_level_2>). Obsługujemy zarówno ścieżki '.', jak i '..', w ścieżkach względnych.
  • Metoda glob() obsługuje globbing "*" i "**".
  • Metoda exists() zwraca wartość logiczną wskazującą, czy określony plik istnieje w bieżącym katalogu głównym.
  • Metoda open() zwraca obiekt podobny do pliku, który można przekazać do dowolnej innej biblioteki, która oczekuje pracy z plikami języka Python. Kod może również używać tego obiektu, tak jakby był to normalny obiekt pliku języka Python. Te obiekty podobne do plików szanują użycie with kontekstów, jak pokazano w tym przykładzie:
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)

Przekazywanie plików za pośrednictwem elementu 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 jest ścieżką lokalną i rpath jest ścieżką zdalną. Jeśli foldery określone w rpath pliku jeszcze nie istnieją, utworzymy foldery dla Ciebie.

Obsługujemy trzy tryby zastępowania:

  • APPEND: jeśli plik o tej samej nazwie istnieje w ścieżce docelowej, funkcja APPEND przechowuje oryginalny plik
  • FAIL_ON_FILE_CONFLICT: jeśli plik o tej samej nazwie istnieje w ścieżce docelowej, FAIL_ON_FILE_CONFLICT zgłasza błąd
  • MERGE_WITH_OVERWRITE: jeśli plik o tej samej nazwie istnieje w ścieżce docelowej, MERGE_WITH_OVERWRITE zastąpi istniejący plik nowym plikiem

Pobieranie plików za pośrednictwem usługi 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)

Przykłady

W tych przykładach pokazano użycie specyfikacji systemu plików w typowych scenariuszach.

Odczytywanie pojedynczego pliku CSV do biblioteki Pandas

Pojedynczy plik CSV można odczytać w bibliotece Pandas, jak pokazano poniżej:

import pandas as pd

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

Odczytywanie folderu plików CSV w bibliotece Pandas

Metoda Pandas read_csv() nie obsługuje odczytywania folderu plików CSV. Aby to obsłużyć, utwórz globing ścieżek csv i połącz je z ramką danych za pomocą metody Pandas concat() . W następnym przykładzie kodu pokazano, jak osiągnąć to połączenie z systemem plików usługi Azure Machine Learning:

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()

Odczytywanie plików CSV w języku Dask

W tym przykładzie pokazano, jak odczytać plik CSV do ramki danych 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()

Odczytywanie folderu plików parquet do biblioteki Pandas

W ramach procesu ETL pliki Parquet są zwykle zapisywane w folderze, co może następnie emitować pliki istotne dla ETL, takie jak postęp, zatwierdzenia itp. W tym przykładzie pokazano pliki utworzone na podstawie procesu ETL (pliki rozpoczynające się od _), które następnie tworzą plik parquet danych.

Zrzut ekranu przedstawiający proces ETL parquet.

W tych scenariuszach odczytujesz tylko pliki parquet w folderze i ignorujesz pliki procesów ETL. W tym przykładzie kodu pokazano, jak wzorce glob mogą odczytywać tylko pliki parquet w folderze:

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()

Uzyskiwanie dostępu do danych z systemu plików usługi Azure Databricks (dbfs)

Specyfikacja systemu plików (fsspec) zawiera szereg znanych implementacji, w tym system plików usługi Databricks (dbfs).

Aby uzyskać dostęp do danych z dbfs zasobu, potrzebne są następujące elementy:

Przy użyciu tych wartości należy utworzyć zmienną środowiskową tokenu PAT w wystąpieniu obliczeniowym:

export ADB_PAT=<pat_token>

Następnie możesz uzyskać dostęp do danych w bibliotece Pandas, jak pokazano w tym przykładzie:

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)

Odczytywanie obrazów za pomocą polecenia 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()

Przykład niestandardowego zestawu danych PyTorch

W tym przykładzie utworzysz niestandardowy zestaw danych PyTorch do przetwarzania obrazów. Zakładamy, że plik adnotacji (w formacie CSV) istnieje z tą ogólną strukturą:

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

Podfoldery przechowują te obrazy zgodnie z ich etykietami:

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

Niestandardowa klasa zestawu danych PyTorch musi implementować trzy funkcje: __init__, i __len____getitem__, jak pokazano poniżej:

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

Następnie możesz utworzyć wystąpienie zestawu danych, jak pokazano poniżej:

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)

Materializowanie danych do biblioteki Pandas przy użyciu mltable biblioteki

Biblioteka mltable może również ułatwić dostęp do danych w magazynie w chmurze. Odczytywanie danych do biblioteki Pandas z następującym ogólnym formatem 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()

Obsługiwane ścieżki

Biblioteka mltable obsługuje odczytywanie danych tabelarycznych z różnych typów ścieżek:

Lokalizacja Przykłady
Ścieżka na komputerze lokalnym ./home/username/data/my_data
Ścieżka na publicznym serwerze HTTP https://raw.githubusercontent.com/pandas-dev/pandas/main/doc/data/titanic.csv
Ścieżka w usłudze Azure Storage wasbs://<container_name>@<account_name>.blob.core.windows.net/<path>
abfss://<file_system>@<account_name>.dfs.core.windows.net/<path>
Długi magazyn danych usługi Azure Machine Learning azureml://subscriptions/<subid>/resourcegroups/<rgname>/workspaces/<wsname>/datastores/<name>/paths/<path>

Uwaga

mltable Program wykonuje przekazywanie poświadczeń użytkownika dla ścieżek w magazynach danych usługi Azure Storage i Azure Machine Learning. Jeśli nie masz uprawnień dostępu do danych w magazynie bazowym, nie możesz uzyskać dostępu do danych.

Pliki, foldery i globy

mltable program obsługuje odczytywanie z:

  • pliki — na przykład: abfss://<file_system>@<account_name>.dfs.core.windows.net/my-csv.csv
  • foldery — na przykład abfss://<file_system>@<account_name>.dfs.core.windows.net/my-folder/
  • wzorce globu — na przykład abfss://<file_system>@<account_name>.dfs.core.windows.net/my-folder/*.csv
  • kombinacja plików, folderów i/lub wzorców symboli globbingowych

mltable elastyczność umożliwia materializację danych w jedną ramkę danych z kombinacji zasobów magazynu lokalnego i w chmurze oraz kombinacji plików/folderów/globów. Na przykład:

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])

Obsługiwane formaty plików

mltable program obsługuje następujące formaty plików:

  • Rozdzielany tekst (na przykład: pliki CSV): mltable.from_delimited_files(paths=[path])
  • Parquet: mltable.from_parquet_files(paths=[path])
  • Delta: mltable.from_delta_lake(paths=[path])
  • Format wierszy JSON: mltable.from_json_lines_files(paths=[path])

Przykłady

Odczytywanie pliku CSV

Zaktualizuj symbole zastępcze (<>) w tym fragmencie kodu przy użyciu określonych szczegółów:

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()

Odczytywanie plików parquet w folderze

W tym przykładzie pokazano, jak mltable można używać wzorców globu , takich jak symbole wieloznaczne , aby upewnić się, że tylko pliki parquet są odczytywane.

Zaktualizuj symbole zastępcze (<>) w tym fragmencie kodu przy użyciu określonych szczegółów:

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()

Odczytywanie zasobów danych

W tej sekcji pokazano, jak uzyskać dostęp do zasobów danych usługi Azure Machine Learning w bibliotece Pandas.

Zasób tabeli

Jeśli wcześniej utworzono zasób tabeli w usłudze Azure Machine Learning (lub mltablew wersji 1 TabularDataset), możesz załadować ten zasób tabeli do biblioteki Pandas przy użyciu następującego kodu:

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()

Zasób pliku

Jeśli zarejestrowano zasób pliku (na przykład plik CSV), możesz odczytać ten zasób do ramki danych biblioteki Pandas przy użyciu następującego kodu:

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()

Zasób folderu

Jeśli zarejestrowano zasób folderu (uri_folder lub V1 FileDataset) — na przykład folder zawierający plik CSV — możesz odczytać ten zasób do ramki danych biblioteki Pandas przy użyciu następującego kodu:

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()

Uwaga dotycząca odczytywania i przetwarzania dużych woluminów danych za pomocą biblioteki Pandas

Napiwek

Biblioteka Pandas nie jest przeznaczona do obsługi dużych zestawów danych. Biblioteka Pandas może przetwarzać tylko dane, które mogą mieścić się w pamięci wystąpienia obliczeniowego.

W przypadku dużych zestawów danych zalecamy użycie zarządzanej platformy Spark w usłudze Azure Machine Learning. Zapewnia to interfejs API biblioteki Pandas PySpark.

Przed skalowaniem w górę do zdalnego zadania asynchronicznego warto szybko wykonać iterację w mniejszym podzestawie dużego zestawu danych. mltable udostępnia wbudowane funkcje umożliwiające pobieranie przykładów dużych danych przy użyciu metody 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()

Możesz również wziąć podzbióry dużych danych za pomocą następujących operacji:

Pobieranie danych przy użyciu azcopy narzędzia

azcopy Użyj narzędzia , aby pobrać dane do lokalnego dysku SSD hosta (maszyny lokalnej, maszyny wirtualnej w chmurze, wystąpienia obliczeniowego usługi Azure Machine Learning itp.) do lokalnego systemu plików. Narzędzie azcopy , które jest wstępnie zainstalowane w wystąpieniu obliczeniowym usługi Azure Machine Learning, obsługuje pobieranie danych. Jeśli nie używasz wystąpienia obliczeniowego usługi Azure Machine Learning ani maszyny wirtualnej Nauka o danych (DSVM), może być konieczne zainstalowanie programu azcopy. Aby uzyskać więcej informacji, odwiedź stronę azcopy.

Uwaga

Nie zalecamy pobierania danych do lokalizacji w wystąpieniu /home/azureuser/cloudfiles/code obliczeniowym. Ta lokalizacja jest przeznaczona do przechowywania artefaktów notesu i kodu, a nie danych. Odczytywanie danych z tej lokalizacji spowoduje znaczne obciążenie związane z wydajnością podczas trenowania. Zamiast tego zalecamy magazyn danych w obiekcie home/azureuser, który jest lokalnym dyskiem SSD węzła obliczeniowego.

Otwórz terminal i utwórz nowy katalog, na przykład:

mkdir /home/azureuser/data

Zaloguj się do narzędzia azcopy przy użyciu:

azcopy login

Następnie możesz skopiować dane przy użyciu identyfikatora URI magazynu

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

Następne kroki