Ler as Tabelas do Delta Lake (Synapse ou locais externos)
Observação
Desativaremos o Microsoft Azure HDInsight no AKS em 31 de janeiro de 2025. Para evitar o encerramento abrupto das suas cargas de trabalho, você precisará migrá-las para o Microsoft Fabric ou para um produto equivalente do Azure antes de 31 de janeiro de 2025. Os clusters restantes em sua assinatura serão interrompidos e removidos do host.
Somente o suporte básico estará disponível até a data de desativação.
Importante
Esse recurso está atualmente na visualização. Os Termos de uso complementares para versões prévias do Microsoft Azure incluem mais termos legais que se aplicam aos recursos do Azure que estão em versão beta, em versão prévia ou ainda não lançados em disponibilidade geral. Para obter informações sobre essa versão prévia específica, confira Informações sobre a versão prévia do Azure HDInsight no AKS. Caso tenha perguntas ou sugestões de recursos, envie uma solicitação no AskHDInsight com os detalhes e siga-nos para ver mais atualizações sobre a Comunidade do Azure HDInsight.
Esse artigo fornece uma visão geral de como ler uma tabela Delta Lake sem ter acesso ao metastore (Synapse ou outros metastores sem acesso público).
Você pode realizar as seguintes operações nas tabelas usando Trino com HDInsight no AKS.
- DELETE
- UPDATE
- INSERT
- MERGE
Pré-requisitos
Criar esquemas e tabelas Delta Lake
Essa seção mostra como criar uma tabela Delta em um local pré-existente, considerando que você já tem um catálogo do Delta Lake configurado.
Navegue pela conta de armazenamento usando o
Storage browser
no portal do Azure até onde está o diretório base da tabela. Se essa tabela for originada no Synapse, ela provavelmente estará em um caminhosynapse/workspaces/.../warehouse/
e terá o nome de sua tabela e conterá um diretório_delta_log
. SelecioneCopy URL
entre os três pontos localizados ao lado da pasta.Você precisa converter esse caminho http em um caminho do ABFS (Sistema de Arquivos de Blobs do Azure):
O caminho http de armazenamento é estruturado da seguinte maneira:
https://{{AZURE_STORAGE_ACCOUNT}}.blob.core.windows.net/{{AZURE_STORAGE_CONTAINER}}/synapse/workspaces/my_workspace/warehouse/{{TABLE_NAME}}/
Os caminhos do ABFS precisam ter essa aparência:
abfss://{{AZURE_STORAGE_CONTAINER}}@{{AZURE_STORAGE_ACCOUNT}}.dfs.core.windows.net/synapse/workspaces/my_workspace/warehouse/{{TABLE_NAME}}/
Exemplo:
abfss://container@storageaccount.dfs.core.windows.net/synapse/workspaces/workspace_name/warehouse/table_name/
Crie um esquema de Delta Lake no Trino.
CREATE SCHEMA delta.default;
Como alternativa, você também pode criar um esquema em uma conta de armazenamento específica:
CREATE SCHEMA delta.default WITH (location = 'abfss://container@storageaccount.dfs.core.windows.net/trino/');
Use o procedimento
register_table
para criar a tabela.CALL delta.system.register_table(schema_name => 'default', table_name => 'table_name', table_location => 'abfss://container@storageaccount.dfs.core.windows.net/synapse/workspaces/workspace_name/warehouse/table_name/');
Consulte a tabela para verificar.
SELECT * FROM delta.default.table_name
Gravar tabelas do Delta Lake no Synapse Spark
Use format("delta")
para salvar um dataframe como uma tabela Delta, depois você pode usar o caminho em que salvou o dataframe como formato delta para registrar a tabela no Trino.
my_dataframe.write.format("delta").save("abfss://container@storageaccount.dfs.core.windows.net/synapse/workspaces/workspace_name/warehouse/table_name")