NotebookUtils (antigo MSSparkUtils) para Fabric
Notebook Utilities (NotebookUtils) é um pacote interno que ajuda a executar facilmente tarefas comuns no Fabric Notebook. Você pode usar o NotebookUtils para trabalhar com sistemas de arquivos, obter variáveis de ambiente, encadear notebooks e trabalhar com segredos. O pacote NotebookUtils está disponível no PySpark (Python) Scala, notebooks do SparkR e pipelines do Fabric.
Observação
- MsSparkUtils foi oficialmente renomeado para NotebookUtils. O código existente permanecerá compatível com versões anteriores e não causará alterações significativas. É altamente recomendável atualizar para notebookutils para garantir suporte contínuo e acesso a novos recursos. O namespace mssparkutils será desativado no futuro.
- O NotebookUtils foi projetado para funcionar com o Spark 3.4 (Runtime v1.2) e versões posteriores. Todos os novos recursos e atualizações serão suportados exclusivamente com o namespace notebookutils no futuro.
Utilitários do sistema de arquivos
O notebookutils.fs fornece utilitários para trabalhar com vários sistemas de arquivos, incluindo o ADLS (Azure Data Lake Storage) Gen2 e o Armazenamento de Blobs do Azure. Configure o acesso ao Azure Data Lake Storage Gen2 e ao Armazenamento de Blobs do Azure adequadamente.
Execute os seguintes comandos para obter uma visão geral dos métodos disponíveis:
notebookutils.fs.help()
Saída
notebookutils.fs provides utilities for working with various FileSystems.
Below is overview about the available methods:
cp(from: String, to: String, recurse: Boolean = false): Boolean -> Copies a file or directory, possibly across FileSystems
fastcp(from: String, to: String, recurse: Boolean = true): Boolean -> [Preview] Copies a file or directory via azcopy, possibly across FileSystems
mv(from: String, to: String, createPath: Boolean = false, overwrite: Boolean = false): Boolean -> Moves a file or directory, possibly across FileSystems
ls(dir: String): Array -> Lists the contents of a directory
mkdirs(dir: String): Boolean -> Creates the given directory if it does not exist, also creating any necessary parent directories
put(file: String, contents: String, overwrite: Boolean = false): Boolean -> Writes the given String out to a file, encoded in UTF-8
head(file: String, maxBytes: int = 1024 * 100): String -> Returns up to the first 'maxBytes' bytes of the given file as a String encoded in UTF-8
append(file: String, content: String, createFileIfNotExists: Boolean): Boolean -> Append the content to a file
rm(dir: String, recurse: Boolean = false): Boolean -> Removes a file or directory
exists(file: String): Boolean -> Check if a file or directory exists
mount(source: String, mountPoint: String, extraConfigs: Map[String, Any]): Boolean -> Mounts the given remote storage directory at the given mount point
unmount(mountPoint: String): Boolean -> Deletes a mount point
mounts(): Array[MountPointInfo] -> Show information about what is mounted
getMountPath(mountPoint: String, scope: String = ""): String -> Gets the local path of the mount point
Use notebookutils.fs.help("methodName") for more info about a method.
O NotebookUtils funciona com o sistema de arquivos da mesma forma que as APIs do Spark. Veja o uso do notebookutils.fs.mkdirs() e do Lakehouse do Fabric, por exemplo:
Uso | Caminho relativo da raiz do HDFS | Caminho absoluto para o sistema de arquivos do ABFS | Caminho absoluto para o sistema de arquivos local no nó do driver |
---|---|---|---|
Lakehouse não padrão | Sem suporte | notebookutils.fs.mkdirs("abfss://<container_name>@<storage_account_name>.dfs.core.windows.net/<new_dir>") | notebookutils.fs.mkdirs("file:/<new_dir>") |
Lakehouse padrão | Diretório em "Arquivos" ou "Tabelas": notebookutils.fs.mkdirs("Files/<new_dir>") | notebookutils.fs.mkdirs("abfss://<container_name>@<storage_account_name>.dfs.core.windows.net/<new_dir>") | notebookutils.fs.mkdirs("file:/<new_dir>") |
Listar arquivos
Para listar o conteúdo de um diretório, use notebookutils.fs.ls("O caminho do seu diretório"). Por exemplo:
notebookutils.fs.ls("Files/tmp") # works with the default lakehouse files using relative path
notebookutils.fs.ls("abfss://<container_name>@<storage_account_name>.dfs.core.windows.net/<path>") # based on ABFS file system
notebookutils.fs.ls("file:/tmp") # based on local file system of driver node
Exibir propriedades de arquivo
Retorna as propriedades do arquivo, incluindo o nome, o caminho e o tamanho do arquivo e se ele é um diretório e um arquivo.
files = notebookutils.fs.ls('Your directory path')
for file in files:
print(file.name, file.isDir, file.isFile, file.path, file.size)
Criar um diretório
Cria o diretório especificado se ele não existir e todos os diretórios pai necessários.
notebookutils.fs.mkdirs('new directory name')
notebookutils.fs.mkdirs("Files/<new_dir>") # works with the default lakehouse files using relative path
notebookutils.fs.ls("abfss://<container_name>@<storage_account_name>.dfs.core.windows.net/<new_dir>") # based on ABFS file system
notebookutils.fs.ls("file:/<new_dir>") # based on local file system of driver node
Copiar arquivo
Esse método copia um arquivo ou diretório e dá suporte à atividade de cópia em sistemas de arquivos.
notebookutils.fs.cp('source file or directory', 'destination file or directory', True)# Set the third parameter as True to copy all files and directories recursively
Arquivo de cópia com desempenho
Esse método oferece uma abordagem mais eficiente para copiar ou mover arquivos, principalmente ao lidar com grandes volumes de dados. Para melhorar o desempenho no Fabric, é aconselhável utilizar fastcp
como substituto do método tradicional cp
.
Observação
notebookutils.fs.fastcp()
não dá suporte à cópia de arquivos no OneLake entre regiões. Nesse caso, você pode usar notebookutils.fs.cp()
.
notebookutils.fs.fastcp('source file or directory', 'destination file or directory', True)# Set the third parameter as True to copy all files and directories recursively
Visualizar o conteúdo do arquivo
Retorna até os primeiros “maxBytes” bytes do arquivo fornecido como uma cadeia de caracteres codificada em UTF-8.
notebookutils.fs.head('file path', maxBytes to read)
Mover arquivo
Esse método move um arquivo ou diretório e dá suporte a movimentações entre sistemas de arquivos.
notebookutils.fs.mv('source file or directory', 'destination directory', True) # Set the last parameter as True to firstly create the parent directory if it does not exist
notebookutils.fs.mv('source file or directory', 'destination directory', True, True) # Set the third parameter to True to firstly create the parent directory if it does not exist. Set the last parameter to True to overwrite the updates.
Gravar arquivo
Esse método grava a cadeia de caracteres fornecida em um arquivo, codificada em UTF-8.
notebookutils.fs.put("file path", "content to write", True) # Set the last parameter as True to overwrite the file if it existed already
Acrescentar conteúdo a um arquivo
Esse método acrescenta a cadeia de caracteres especificada a um arquivo, codificada em UTF-8.
notebookutils.fs.append("file path", "content to append", True) # Set the last parameter as True to create the file if it does not exist
Observação
notebookutils.fs.append()
enotebookutils.fs.put()
não dão suporte à gravação simultânea no mesmo arquivo devido à falta de garantias de atomicidade.- Ao usar a API
notebookutils.fs.append
em um loopfor
para gravar no mesmo arquivo, recomendamos adicionar uma instruçãosleep
em torno de 0,5s~1s entre as gravações recorrentes. Isso ocorre porque a operaçãonotebookutils.fs.append
interna da APIflush
é assíncrona, então um pequeno atraso ajuda a garantir a integridade dos dados.
Excluir arquivo ou diretório
Esse método remove um arquivo ou diretório.
notebookutils.fs.rm('file path', True) # Set the last parameter as True to remove all files and directories recursively
Diretório de montagem/desmontagem
Obtenha mais informações sobre o uso detalhado em Montagem e desmontagem de arquivos.
Utilitários de notebook
Use o Notebook Utilities para executar ou sair de um notebook com um valor. Execute o seguinte comando para obter uma visão geral dos métodos disponíveis:
notebookutils.notebook.help()
Saída:
The notebook module.
exit(value: String): void -> This method lets you exit a notebook with a value.
run(path: String, timeoutSeconds: int, arguments: Map, workspace: String): String -> This method runs a notebook and returns its exit value.
runMultiple(DAG: Any): Map[String, MsNotebookRunResult] -> [Preview] Runs multiple notebooks concurrently with support for dependency relationships.
validateDAG(DAG: Any): Boolean -> [Preview] This method check if the DAG is correctly defined.
[Preview] Below methods are only support Fabric Notebook.
create(name: String, description: String = "", content: String = "", defaultLakehouse: String = "", defaultLakehouseWorkspace: String = "", workspaceId: String = ""): Artifact -> Create a new Notebook.
get(name: String, workspaceId: String = ""): Artifact -> Get a Notebook by name or id.
update(name: String, newName: String, description: String = "", workspaceId: String = ""): Artifact -> Update a Artifact by name.
delete(name: String, workspaceId: String = ""): Boolean -> Delete a Notebook by name.
list(workspaceId: String = "", maxResults: Int = 1000): Array[Artifact] -> List all Notebooks in the workspace.
updateDefinition(name: String, content: String = "", defaultLakehouse: String = "", defaultLakehouseWorkspace: String = "", workspaceId: String = "") -> Update the definition of a Notebook.
Use notebookutils.notebook.help("methodName") for more info about a method.
Observação
Os utilitários de notebook não são aplicáveis para definições de trabalho do Apache Spark (SJD).
Referenciar um notebook
Esse método faz referência a um notebook e retorna seu valor de saída. Você pode executar o aninhamento de chamadas de função em um notebook interativamente ou em um pipeline. O notebook que está sendo referenciado é executado no pool do Spark em que o notebook chama essa função.
notebookutils.notebook.run("notebook name", <timeoutSeconds>, <parameterMap>, <workspaceId>)
Por exemplo:
notebookutils.notebook.run("Sample1", 90, {"input": 20 })
O notebook do Fabric também oferece suporte à referência de notebooks em vários espaços de trabalho, especificando a ID do espaço de trabalho.
notebookutils.notebook.run("Sample1", 90, {"input": 20 }, "fe0a6e2a-a909-4aa3-a698-0a651de790aa")
Você pode abrir o link de instantâneo da execução de referência na saída da célula. O instantâneo captura os resultados da execução de código e permite que você depure facilmente uma execução de referência.
Observação
- O notebook de referência entre espaços de trabalho é suportado pelo runtime versão 1.2 e superior.
- Se você usar os arquivos em Recursos do Notebook, use
notebookutils.nbResPath
no notebook referenciado para garantir que ele aponte para a mesma pasta que a execução interativa.
A referência executa vários notebooks paralelamente
Importante
Esse recurso está em preview.
O método notebookutils.notebook.runMultiple()
permite executar vários notebooks paralelamente ou com uma estrutura topológica predefinida. A API está usando um mecanismo de implementação de vários threads em uma sessão do Spark, o que significa que os recursos de computação são compartilhados pelas execuções do notebook de referência.
Com notebookutils.notebook.runMultiple()
, você pode:
Execute vários notebooks simultaneamente, sem aguardar a conclusão de cada um.
Especifique as dependências e a ordem de execução para seus notebooks usando um formato JSON simples.
Otimize o uso de recursos de computação do Spark e reduza o custo dos seus projetos do Fabric.
Exiba os Instantâneos de cada registro de execução do notebook na saída e depure/monitore as tarefas do notebook convenientemente.
Obtenha o valor de saída de cada atividade executiva e use-as em tarefas downstream.
Você também pode tentar executar o notebookutils.notebook.help("runMultiple") para localizar o exemplo e o uso detalhado.
Este é um exemplo simples de como executar uma lista de notebooks paralelamente usando este método:
notebookutils.notebook.runMultiple(["NotebookSimple", "NotebookSimple2"])
O resultado da execução do notebook raiz é o seguinte:
Veja a seguir um exemplo de execução de notebooks com estrutura topológica usando notebookutils.notebook.runMultiple()
. Use esse método para orquestrar facilmente notebooks por meio de uma experiência de código.
# run multiple notebooks with parameters
DAG = {
"activities": [
{
"name": "NotebookSimple", # activity name, must be unique
"path": "NotebookSimple", # notebook path
"timeoutPerCellInSeconds": 90, # max timeout for each cell, default to 90 seconds
"args": {"p1": "changed value", "p2": 100}, # notebook parameters
},
{
"name": "NotebookSimple2",
"path": "NotebookSimple2",
"timeoutPerCellInSeconds": 120,
"args": {"p1": "changed value 2", "p2": 200}
},
{
"name": "NotebookSimple2.2",
"path": "NotebookSimple2",
"timeoutPerCellInSeconds": 120,
"args": {"p1": "changed value 3", "p2": 300},
"retry": 1,
"retryIntervalInSeconds": 10,
"dependencies": ["NotebookSimple"] # list of activity names that this activity depends on
}
],
"timeoutInSeconds": 43200, # max timeout for the entire DAG, default to 12 hours
"concurrency": 50 # max number of notebooks to run concurrently, default to 50
}
notebookutils.notebook.runMultiple(DAG, {"displayDAGViaGraphviz": False})
O resultado da execução do notebook raiz é o seguinte:
Também oferecemos um método para verificar se o DAG está definido corretamente.
notebookutils.notebook.validateDAG(DAG)
Observação
- O grau de paralelismo da execução de vários notebooks é restrito ao recurso de computação total disponível de uma sessão do Spark.
- O limite superior para atividades de notebook ou notebooks simultâneos é 50. Exceder esse limite pode levar a problemas de estabilidade e desempenho devido ao alto uso de recursos de computação. Se surgirem problemas, considere separar os notebooks em várias chamadas de
runMultiple
ou reduzir a simultaneidade ajustando o campo de simultaneidade no parâmetro DAG. - O tempo limite padrão para todo o DAG é de 12 horas, e o tempo limite padrão para cada célula no notebook secundário é de 90 segundos. Você pode alterar o tempo limite definindo os campos timeoutInSeconds e timeoutPerCellInSeconds no parâmetro DAG.
Sair de um notebook
Esse método sai de um notebook com um valor. Você pode executar o aninhamento de chamadas de função em um notebook interativamente ou em um pipeline.
Quando você chama uma função exit() de um notebook interativamente, o notebook do Fabric gera uma exceção, ignora as células subsequentes em execução e mantém a sessão do Spark ativa.
Quando você orquestra um notebook no pipeline que chama uma função exit(), a atividade do Notebook retorna com um valor de saída, conclui a execução do pipeline e interrompe a sessão do Spark.
Quando você chamar uma função exit() em um notebook que está sendo referenciado, o Fabric Spark interrompe a execução do notebook referenciado e continua a executar as próximas células no notebook principal que chama a função run(). Por exemplo: Notebook1 tem três células e chama uma função exit() na segunda célula. O Notebook2 tem cinco células e chama run(notebook1) na terceira célula. Quando você executa Notebook2, Notebook1 interrompe na segunda célula quando ocorre a função exit(). Notebook2 continua a executar a quarta célula e a quinta célula.
notebookutils.notebook.exit("value string")
Observação
A função exit() substituirá a saída da célula atual, para evitar perder a saída de outras instruções de código, chame notebookutils.notebook.exit()
em uma célula separada.
Por exemplo:
Notebook Sample1 com as duas células seguintes:
A célula 1 define um parâmetro de entrada com valor padrão 10.
A célula 2 sai do notebook com entrada como valor de saída.
Você pode executar Sample1 em outro notebook com valores padrão:
exitVal = notebookutils.notebook.run("Sample1")
print (exitVal)
Saída:
Notebook is executed successfully with exit value 10
Você pode executar Sample1 em outro notebook e definir o valor de entrada como 20:
exitVal = notebookutils.notebook.run("Sample1", 90, {"input": 20 })
print (exitVal)
Saída:
Notebook is executed successfully with exit value 20
Gerenciar artefatos do Notebook
notebookutils.notebook
fornece utilitários especializados para gerenciar itens do Notebook programaticamente. Essas APIs ajudam a criar, obter, atualizar e excluir itens do Notebook com facilidade.
Para utilizar esses métodos de forma eficaz, considere os seguintes exemplos de uso:
Criar um Notebook
with open("/path/to/notebook.ipynb", "r") as f:
content = f.read()
artifact = notebookutils.notebook.create("artifact_name", "description", "content", "default_lakehouse_name", "default_lakehouse_workspace_id", "optional_workspace_id")
Obter conteúdo de um Notebook
artifact = notebookutils.notebook.get("artifact_name", "optional_workspace_id")
Atualizar um Notebook
updated_artifact = notebookutils.notebook.update("old_name", "new_name", "optional_description", "optional_workspace_id")
updated_artifact_definition = notebookutils.notebook.updateDefinition("artifact_name", "content", "default_lakehouse_name", "default_Lakehouse_Workspace_name", "optional_workspace_id")
Excluir um Notebook
is_deleted = notebookutils.notebook.delete("artifact_name", "optional_workspace_id")
Listar notebooks em um espaço de trabalho
artifacts_list = notebookutils.notebook.list("optional_workspace_id")
Utilitários de credenciais
Você pode usar os Utilitários de credenciais para obter tokens de acesso e gerenciar segredos em um Azure Key Vault.
Execute o seguinte comando para obter uma visão geral dos métodos disponíveis:
notebookutils.credentials.help()
Saída:
Help on module notebookutils.credentials in notebookutils:
NAME
notebookutils.credentials - Utility for credentials operations in Fabric
FUNCTIONS
getSecret(akvName, secret) -> str
Gets a secret from the given Azure Key Vault.
:param akvName: The name of the Azure Key Vault.
:param secret: The name of the secret.
:return: The secret value.
getToken(audience) -> str
Gets a token for the given audience.
:param audience: The audience for the token.
:return: The token.
help(method_name=None)
Provides help for the notebookutils.credentials module or the specified method.
Examples:
notebookutils.credentials.help()
notebookutils.credentials.help("getToken")
:param method_name: The name of the method to get help with.
DATA
creds = <notebookutils.notebookutils.handlers.CredsHandler.CredsHandler...
FILE
/home/trusted-service-user/cluster-env/trident_env/lib/python3.10/site-packages/notebookutils/credentials.py
Obter o token
getToken retorna um token do Microsoft Entra para um determinado público e nome (opcional). A lista a seguir mostra as chaves de público disponíveis no momento:
- Recurso de Audiência de Armazenamento: "armazenamento"
- Recurso do Power BI: "pbi"
- Recurso do Azure Key Vault: "keyvault"
- Recurso de BD KQL do Synapse RTA: "kusto"
Execute o seguinte comando para obter o token:
notebookutils.credentials.getToken('audience Key')
Obter segredo usando as credenciais do usuário
O getSecret retorna um segredo do Azure Key Vault para um determinado ponto de extremidade e nome do segredo do Azure Key Vault usando as credenciais do usuário.
notebookutils.credentials.getSecret('https://<name>.vault.azure.net/', 'secret name')
Montagem e desmontagem de arquivos
O Fabric dá suporte a cenários de montagem no pacote Microsoft Spark Utilities. Você pode usar as APIs mount, unmount, getMountPath() e mounts() para anexar o armazenamento remoto (ADLS Gen2) a todos os nós em funcionamento (nó do driver e nós de trabalho). Depois que o ponto de montagem do armazenamento estiver em vigor, use a API de arquivo local para acessar dados como se estivessem armazenados no sistema de arquivos local.
Como montar uma conta do ADLS Gen2
O exemplo a seguir ilustra como montar o Azure Data Lake Storage Gen2. A montagem do Armazenamento de Blobs funciona da mesma forma.
Esse exemplo pressupõe que você tenha uma conta do Data Lake Storage Gen2 chamada storegen2 e que a conta tenha um contêiner chamado mycontainer que você deseja montar para /test em sua sessão do Notebook Spark.
Para montar o contêiner chamado mycontainer, notebookutils precisa primeiro verificar se você tem a permissão para acessar o contêiner. Atualmente, o Microsoft Fabric dá suporte a dois métodos de autenticação para a operação de montagem do gatilho: accountKey e sastoken.
Montagem por meio de token de assinatura de acesso compartilhado ou chave de conta
O NotebookUtils dá suporte a passagem explícita de uma chave de conta ou de um token de Assinatura de Acesso Compartilhado (SAS) como um parâmetro para montar o destino.
Por motivos de segurança, recomendamos que você armazene chaves de conta ou tokens SAS no Azure Key Vault (como mostra a captura de tela de exemplo a seguir). Você pode recuperá-los usando a API notebookutils.credentials.getSecret. Para obter mais informações, consulte Sobre as chaves de conta de armazenamento gerenciadas do Azure Key Vault.
Código de exemplo para o método accountKey :
# get access token for keyvault resource
# you can also use full audience here like https://vault.azure.net
accountKey = notebookutils.credentials.getSecret("<vaultURI>", "<secretName>")
notebookutils.fs.mount(
"abfss://mycontainer@<accountname>.dfs.core.windows.net",
"/test",
{"accountKey":accountKey}
)
Código de exemplo para sastoken:
# get access token for keyvault resource
# you can also use full audience here like https://vault.azure.net
sasToken = notebookutils.credentials.getSecret("<vaultURI>", "<secretName>")
notebookutils.fs.mount(
"abfss://mycontainer@<accountname>.dfs.core.windows.net",
"/test",
{"sasToken":sasToken}
)
Parâmetros de montagem:
- fileCacheTimeout: os blobs serão armazenados em cache na pasta temporária local por 120 segundos por padrão. Durante esse tempo, blobfuse não verificará se o arquivo está atualizado. O parâmetro pode ser definido para alterar o tempo limite padrão. Quando vários clientes modificam arquivos ao mesmo tempo, para evitar inconsistências entre arquivos locais e remotos, recomendamos reduzir o tempo de cache ou até mesmo alterá-lo para 0 e sempre obter os arquivos mais recentes do servidor.
- tempo limite: o tempo limite da operação de montagem é de 120 segundos por padrão. O parâmetro pode ser definido para alterar o tempo limite padrão. Quando há muitos executores ou quando a montagem atinge o tempo limite, recomendamos aumentar o valor.
Você pode usar esses parâmetros como este:
notebookutils.fs.mount(
"abfss://mycontainer@<accountname>.dfs.core.windows.net",
"/test",
{"fileCacheTimeout": 120, "timeout": 120}
)
Observação
Por motivos de segurança, é aconselhável evitar a inclusão de credenciais diretamente no código. Para proteger ainda mais suas credenciais, todos os segredos exibidos nas saídas do Notebook serão editados. Para mais informações, confira Remoção de segredos.
Como montar um lakehouse
Código de exemplo para montar uma lakehouse em /<mount_name>:
notebookutils.fs.mount(
"abfss://<workspace_name>@onelake.dfs.fabric.microsoft.com/<lakehouse_name>.Lakehouse",
"/<mount_name>"
)
Acessar arquivos no ponto de montagem usando a API notebookutils fs
A principal finalidade da operação de montagem é permitir o acesso dos clientes aos dados armazenados em uma conta de armazenamento remoto por meio da API do sistema de arquivos local. Você também pode acessar os dados usando a API notebookutils fs com um caminho montado como parâmetro. Esse formato de caminho é um pouco diferente.
Suponha que você tenha montado o contêiner mycontainer do Data Lake Storage Gen2 em /test usando a API de montagem. Quando você acessa os dados usando a API do sistema de arquivos local, o formato do caminho tem a seguinte aparência:
/synfs/notebook/{sessionId}/test/{filename}
Quando você deseja acessar os dados usando a API notebookutils fs, recomendamos usar um getMountPath() para obter o caminho preciso:
path = notebookutils.fs.getMountPath("/test")
Listar diretórios:
notebookutils.fs.ls(f"file://{notebookutils.fs.getMountPath('/test')}")
Ler conteúdo do arquivo:
notebookutils.fs.head(f"file://{notebookutils.fs.getMountPath('/test')}/myFile.txt")
Criar um diretório:
notebookutils.fs.mkdirs(f"file://{notebookutils.fs.getMountPath('/test')}/newdir")
Acessar arquivos no ponto de montagem por meio do caminho local
Você pode ler e gravar facilmente os arquivos no ponto de montagem usando o sistema de arquivos padrão. Aqui está um exemplo do Python:
#File read
with open(notebookutils.fs.getMountPath('/test2') + "/myFile.txt", "r") as f:
print(f.read())
#File write
with open(notebookutils.fs.getMountPath('/test2') + "/myFile.txt", "w") as f:
print(f.write("dummy data"))
Como verificar pontos de montagem existentes
Você pode usar a API notebookutils.fs.mounts() para verificar todas as informações de ponto de montagem existentes:
notebookutils.fs.mounts()
Como desmontar o ponto de montagem
Use o código a seguir para desmontar o ponto de montagem (/test neste exemplo):
notebookutils.fs.unmount("/test")
Limitações conhecidas
A montagem atual é uma configuração de nível de trabalho. Recomendamos usar a API mounts para verificar se o ponto de montagem existe ou não está disponível.
O mecanismo de desmontagem não é aplicado automaticamente. Quando a execução do aplicativo for concluída, para desmontar o ponto de montagem para liberar o espaço em disco, você precisará chamar explicitamente uma API desmontada em seu código. Caso contrário, o ponto de montagem ainda existirá no nó após a conclusão da execução do aplicativo.
Não há suporte para a montagem de uma conta de armazenamento do ADLS Gen1.
Utilitários do Lakehouse
notebookutils.lakehouse
fornece utilitários especificamente adaptados para o gerenciamento de itens do Lakehouse. Esses utilitários permitem criar, obter, atualizar e excluir artefatos do Lakehouse facilmente.
Visão geral dos métodos
Abaixo está uma visão geral dos métodos disponíveis fornecidos por notebookutils.lakehouse
:
# Create a new Lakehouse artifact
create(name: String, description: String = "", definition: ItemDefinition = null, workspaceId: String = ""): Artifact
# Retrieve a Lakehouse artifact
get(name: String, workspaceId: String = ""): Artifact
# Get a Lakehouse artifact with properties
getWithProperties(name: String, workspaceId: String = ""): Artifact
# Update an existing Lakehouse artifact
update(name: String, newName: String, description: String = "", workspaceId: String = ""): Artifact
# Delete a Lakehouse artifact
delete(name: String, workspaceId: String = ""): Boolean
# List all Lakehouse artifacts
list(workspaceId: String = "", maxResults: Int = 1000): Array[Artifact]
# List all tables in a Lakehouse artifact
listTables(lakehouse: String, workspaceId: String = "", maxResults: Int = 1000): Array[Table]
# Starts a load table operation in a Lakehouse artifact
loadTable(loadOption: collection.Map[String, Any], table: String, lakehouse: String, workspaceId: String = ""): Array[Table]
Exemplos de uso
Para utilizar esses métodos de forma eficaz, considere os seguintes exemplos de uso:
Criar um Lakehouse
artifact = notebookutils.lakehouse.create("artifact_name", "Description of the artifact", "optional_workspace_id")
Obter um Lakehouse
artifact = notebookutils.lakehouse.get("artifact_name", "optional_workspace_id")
artifact = notebookutils.lakehouse.getWithProperties("artifact_name", "optional_workspace_id")
Atualizar um Lakehouse
updated_artifact = notebookutils.lakehouse.update("old_name", "new_name", "Updated description", "optional_workspace_id")
Excluir um Lakehouse
is_deleted = notebookutils.lakehouse.delete("artifact_name", "optional_workspace_id")
Listar Lakehouses em um espaço de trabalho
artifacts_list = notebookutils.lakehouse.list("optional_workspace_id")
Listar todas as tabelas em um Lakehouse
artifacts_tables_list = notebookutils.lakehouse.listTables("artifact_name", "optional_workspace_id")
Iniciar uma operação de carga de tabela em um Lakehouse
notebookutils.lakehouse.loadTable(
{
"relativePath": "Files/myFile.csv",
"pathType": "File",
"mode": "Overwrite",
"recursive": False,
"formatOptions": {
"format": "Csv",
"header": True,
"delimiter": ","
}
}, "table_name", "artifact_name", "optional_workspace_id")
Informações adicionais
Para obter informações mais detalhadas sobre cada método e seus parâmetros, utilize a função notebookutils.lakehouse.help("methodName")
.
Utilitários de tempo de execução
Mostrar as informações de contexto da sessão
Com notebookutils.runtime.context
, você pode obter as informações de contexto da sessão ao vivo atual, incluindo o nome do notebook, o lakehouse padrão, as informações do espaço de trabalho, se é uma execução de pipeline etc.
notebookutils.runtime.context
Problema conhecido
Ao usar a versão de tempo de execução acima de 1.2 e executar notebookutils.help()
, as APIs fabricClient e PBIClient listadas ainda não são compatíveis e ficarão disponíveis posteriormente. Além disso, a API de credenciais ainda não é compatível com notebooks Scala.