Use datasets em nós, como Shell, Python e Notebook, para ler e gravar dados no Object Storage Service (OSS) ou Apsara File Storage NAS (NAS) durante o desenvolvimento de dados. Também é possível montar um dataset como armazenamento ao criar uma instância de ambiente de desenvolvimento pessoal.
Recomendamos a leitura de Gerenciar datasets para aprender a criar um dataset.
Visão geral
Os datasets permitem ler e gravar dados armazenados no OSS e no NAS diretamente pelo DataWorks. Crie múltiplas versões de um dataset, rastreie alterações e reverta para uma versão anterior quando necessário.
Limitações
O suporte a datasets está disponível apenas na nova versão do DataStudio.
Grupo de recursos: Acesse datasets a partir de nós de desenvolvimento de dados exclusivamente por meio de um Grupo de recursos Serverless.
Objetos suportados: Datasets são compatíveis apenas com nós Shell, nós Python, Notebooks para desenvolvimento básico e ambientes de desenvolvimento pessoal. Cada objeto aceita a montagem de até 5 datasets.
Tipo de armazenamento: Há suporte para Object Storage Service (OSS) e Apsara File Storage NAS (NAS) via protocolo NFS.
Permissões: Se o ponto de montagem do dataset estiver definido como somente leitura, não será possível modificar ou excluir pastas e arquivos nele contidos. Essa ação resultará em erro de permissão.
Uso de datasets em nós
Esta seção descreve como montar um dataset do OSS em um nó. Neste exemplo, crie um dataset do DataWorks com base no OSS, monte o caminho do OSS oss://datasets-oss.oss-cn-shanghai.aliyuncs.com/dataset01/v1/ no caminho de montagem do dataset /mnt/data/dataset01 e realize operações de leitura e escrita nos dados dentro do código do nó.
Pré-requisitos: criação de um dataset
-
Crie um bucket ou crie um sistema de arquivos.
Este exemplo utiliza um dataset do OSS. Crie um bucket chamado
datasets-ossna região China (Shanghai) e crie o diretório/dataset01/v1. -
Neste exemplo, crie um dataset do OSS chamado
datasets-osse monte o caminho do OSSoss://datasets-oss.oss-cn-shanghai.aliyuncs.com/dataset01/v1/em/mnt/data/dataset01.
1. Configuração do dataset para um nó
Na Debug Configuration de um nó Shell ou Python, configure o dataset datasets-oss.
Antes de publicar o nó, adicione também o dataset na seção Scheduling Settings.
Para usar um dataset, aloque pelo menos 0,5 unidades de computação (CUs) para o nó.
|
Parâmetro |
Descrição |
|
Datasets |
Define o dataset acessível pelo código do nó atual.
Neste exemplo, selecione o dataset do OSS |
|
Mount Path |
Caminho usado pelo código do nó para acessar o dataset. Este campo é preenchido automaticamente com o Default Mount Path definido durante a criação do dataset. Importante
Ao montar vários datasets no mesmo nó, os caminhos de montagem não podem entrar em conflito. |
|
Advanced Settings |
Parâmetro opcional. Permite especificar ferramentas e parâmetros para acesso a dados do OSS ou configurações para sistemas de arquivos NAS no formato JSON.
|
|
Read Only |
Por padrão, o nó atual permite leitura e escrita no dataset. Se o dataset estiver definido como somente leitura para este nó, não será possível gravar dados em seu diretório de montagem pelo código. Tentativas de escrita gerarão erro de permissão. |
2. Uso do dataset em um nó
Este exemplo usa um nó Shell. Após anexar um dataset do OSS ao nó Shell, gerencie os dados do OSS no código do nó como se fossem arquivos locais. O exemplo a seguir usa a ferramenta padrão ossfs 2,0 para gravar o arquivo file01.txt no caminho de montagem /mnt/data/dataset01 do dataset do OSS datasets-oss.
Código de exemplo:
echo "Hello World" > /mnt/data/dataset01/file01.txt
ls -tl /mnt/data/dataset01
No painel Debug Configurations à direita, abra a aba Dataset e selecione o dataset personalizado datasets-oss/V1. Confirme a mensagem de autorização bem-sucedida do grupo de recursos e verifique se a opção Read-only está desativada. Após executar o nó, o log indicará que file01.txt foi criado (12 bytes, permissões: rwxrwxrwx), com código de saída 0, tempo decorrido de 0,741s e status FINISH.
Caso receba a mensagem de erro Job Submit Failed! submit job failed directly! Caused by: execute task failed, exception: [103:ILLEGAL_TASK]:Task with dataset need 0.5cu at least! durante a execução, isso indica CUs insuficientes para a tarefa. Aumente a alocação de CU para o grupo de recursos para pelo menos 0,5.
3. Verificação dos dados no OSS
Após a execução do código em 2. Uso do dataset em um nó, o arquivo é gravado automaticamente no caminho de armazenamento do OSS correspondente ao caminho de montagem do dataset. Visualize o arquivo no caminho de armazenamento do OSS. Neste exemplo, o caminho de montagem /mnt/data/dataset01 do dataset do OSS datasets-oss mapeia para oss://datasets-oss.oss-cn-shanghai.aliyuncs.com/dataset01/v1/. A figura a seguir ilustra os dados gravados no caminho do OSS.
Nesse caminho, localize o arquivo gravado file01.txt (0,012 KB, armazenamento Standard).
Uso de datasets em um ambiente de desenvolvimento pessoal
Depois de definir um dataset, monte-o em uma instância de ambiente de desenvolvimento pessoal durante a criação ou modificação da instância. Em seguida, acesse os dados do dataset diretamente no terminal ou em um Notebook dentro do seu diretório pessoal.
Pré-requisitos: criação de um dataset
-
Este exemplo usa um dataset baseado em NAS. Crie um dataset do NAS chamado
datasets-nasna região China (Shanghai) e monte o caminho do NASnas://****.cn-shanghai.nas.aliyuncs.com/mnt/dataset02/v1/em/mnt/data/dataset02.
1. Configuração de um dataset para o ambiente pessoal
Crie uma instância de ambiente de desenvolvimento pessoal e selecione o dataset existente do NAS datasets-nas.
Na página de configuração, selecione datasets-nas na lista suspensa Dataset e especifique o caminho de montagem correspondente.
|
Parâmetro |
Descrição |
|
Datasets |
Especifica o dataset acessível pelo código da instância. Certifique-se de que a VPC selecionada para a instância do ambiente de desenvolvimento pessoal possa se conectar ao ponto de montagem do NAS. Neste exemplo, selecione o dataset do NAS |
|
Mount Path |
Caminho usado pelo código da instância para acessar o dataset. Neste exemplo, monte o caminho do dataset do NAS Importante
Ao montar vários datasets na mesma instância de ambiente de desenvolvimento pessoal, os caminhos de montagem não devem entrar em conflito. |
|
Advanced Settings |
Parâmetro opcional. Use JSON para especificar as configurações (parâmetro nasOptions) destinadas ao acesso de um sistema de arquivos Apsara File Storage NAS (NAS) que usa o protocolo NFS. O código abaixo apresenta a configuração padrão. Consulte também Montar manualmente um sistema de arquivos NFS para personalizar valores de parâmetros. Importante
|
|
Read Only |
Por padrão, a instância permite leitura e escrita no dataset. Se o dataset estiver configurado como somente leitura para a instância, não será possível gravar dados em seu diretório de montagem via código. Qualquer tentativa de escrita resultará em erro de permissão. |
2. Uso do dataset em um Notebook
No topo da página do DataStudio, alterne para a instância de ambiente de desenvolvimento pessoal e crie um Notebook para desenvolvimento básico.
-
No Notebook, adicione o seguinte conteúdo.
-
Grave dados no caminho especificado do dataset.
import os # Define the destination path and file name file_path = "/mnt/data/dataset02/file02.txt" # Make sure that the directory exists. If the directory does not exist, create it. os.makedirs(os.path.dirname(file_path),exist_ok=True) # Write the content content = "Hello World!" try: with open(file_path, "w", encoding="utf-8") as file: file.write(content) print(f"The file is successfully written to {file_path}") except Exception as e: print(f"Failed to write the file: {str(e)}") -
Leia dados do caminho especificado no dataset.
file_path = "/mnt/data/dataset02/file02.txt" with open(file_path, "r") as file: content = file.read() content
-
-
Execute os dois trechos de código Python separadamente.
NotaAntes de executar o código, certifique-se de ter selecionado o kernel Python correto. Este exemplo usa Python 3.11.9.
Primeiro trecho de código: Grave dados no caminho especificado do dataset.
import os # Define the destination path and file name file_path = "/mnt/data/dataset02/file02.txt" # Make sure that the directory exists. If the directory does not exist, create it. os.makedirs(os.path.dirname(file_path),exist_ok=True) # Write the content content = "Hello World!" try: with open(file_path, "w", encoding="utf-8") as file: file.write(content) print(f"The file is successfully written to {file_path}") except Exception as e: print(f"Failed to write the file: {str(e)}")Se a saída for
The file is successfully written to /mnt/data/dataset02/file02.txt, a operação de escrita foi bem-sucedida. Segundo trecho de código: Leia dados do caminho especificado no dataset.file_path = "/mnt/data/dataset02/file02.txt" with open(file_path, "r") as file: content = file.read() contentSe a saída for
'Hello World!', a operação de leitura foi bem-sucedida.
3. Configuração de agendamento
No lado direito do nó Notebook, clique em Scheduling Settings e adicione as opções do dataset. Use os mesmos parâmetros configurados para a instância do ambiente de desenvolvimento pessoal.
Exemplos de configuração avançada
Ao configurar um dataset, defina configurações avançadas para personalizar parâmetros relevantes no formato JSON:
Ao configurar um dataset para um nó, use configurações avançadas para especificar ferramentas e parâmetros de leitura e escrita de dados do OSS ou para definir configurações de acesso a dados em sistemas de arquivos NAS.
Ao configurar um dataset para um ambiente de desenvolvimento pessoal, use parâmetros avançados para especificar configurações de leitura e escrita de dados em sistemas de arquivos NAS.
Montagem do OSS com ossfs 2,0
O ossfs 2,0 é um cliente que monta o OSS para acesso de alto desempenho. Ele oferece alto throughput de leitura e escrita sequencial e aproveita totalmente a largura de banda do OSS. É ideal para aplicações intensivas em computação que exigem alta performance de E/S sequencial, como treinamento de IA e processamento de big data. Esses cenários envolvem principalmente leituras sequenciais e aleatórias, além de escritas sequenciais (append-only), sem necessidade de semântica POSIX completa.
Na seção Advanced Settings, defina parâmetros avançados. Separe múltiplas opções com vírgula (,). Para instruções sobre o uso de parâmetros avançados e mais opções de configuração, consulte Opções de montagem do ossfs 2,0. Os exemplos a seguir mostram alguns cenários comuns:
-
Fonte de dados imutável: Se todos os arquivos lidos não forem modificados durante uma tarefa, defina um tempo de cache longo para reduzir solicitações de metadados. Um cenário típico é a leitura de um lote de arquivos existentes e a geração de um novo lote após o processamento.
{"mountOssType":"ossfs", "attr_timeout": "7200"} -
Operações rápidas de leitura e escrita: Use um tempo curto de cache de metadados para equilibrar eficiência de cache e atualidade dos dados.
{"mountOssType":"ossfs", "attr_timeout": "3", "negative_timeout":"0"} -
Visão consistente para tarefas distribuídas: Por padrão, o ossfs atualiza dados de arquivos com base no cache de metadados. Use a configuração abaixo para obter uma visão sincronizada entre vários nós.
{ "mountOssType":"ossfs","negative_timeout": "0", "close_to_open":"false"} -
OOM causado pela abertura excessiva de arquivos: Alta concorrência de tarefas com muitos arquivos abertos simultaneamente pode causar problemas de falta de memória (OOM). Use a configuração a seguir para aliviar a pressão sobre a memória.
{"mountOssType":"ossfs","readdirplus": "false", "inode_cache_eviction_threshold":"300000"}
Montagem do OSS com ossfs 1,0
O ossfs 1,0 monta um bucket do OSS como um sistema de arquivos local em sistemas Linux. Comparado ao ossfs 2,0, o ossfs 1,0 oferece suporte mais abrangente a operações de arquivos. Caso encontre incompatibilidades de operações de arquivo com o ossfs 2,0, tente usar o ossfs 1,0.
Para mais informações sobre os parâmetros necessários para montagem com ossfs 1,0, consulte Opções de montagem do ossfs 1,0.
Montagem do OSS com JindoFuse
Use o componente JindoFuse para montar um dataset do OSS em um caminho específico dentro de um container. Esta ferramenta é adequada para os seguintes cenários:
Leitura de dados do OSS como se fossem um dataset local, ou quando o dataset é pequeno o suficiente para se beneficiar da aceleração de cache local do JindoFuse.
Necessidade de gravar dados no OSS.
Na seção Advanced Settings, defina parâmetros avançados. Separe múltiplas opções com vírgula (,). O código a seguir é apenas um exemplo. Para descrições de parâmetros e mais opções de configuração, consulte o Guia do Usuário do JindoFuse e Usar JindoFuse para montar e acessar dados.
Atualmente, o DataWorks suporta apenas parâmetros no formato key=value.
{
"mountOssType":"jindofuse",
"fs.oss.download.thread.concurrency": "2 × number of CPU cores",
"fs.oss.upload.thread.concurrency": "2 × number of CPU cores",
"attr_timeout": 3,
"entry_timeout": 0,
"negative_timeout": 0
}
Uso de um dataset do NAS
Para datasets baseados em NAS, especifique configurações (usando o parâmetro nasOptions) para acessar um sistema de arquivos Apsara File Storage NAS (NAS) baseado em NFS. O código abaixo mostra a configuração padrão. Para personalizar valores de parâmetros, consulte Montar manualmente um sistema de arquivos NFS.
Apenas sistemas de arquivos NAS que usam o protocolo NFS podem ser montados.
Para NAS, há suporte a apenas um parâmetro de configuração avançada:
nasOptions. Para personalizar parâmetros de montagem do NAS, defina a Advanced Configuration como{"nasOptions":"<ParameterName1=ParameterValue>, <ParameterName2=ParameterValue>,..."}.
{"nasOptions":"vers=3,nolock,proto=tcp,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport"}