Partilhar via


Executar consultas federadas no Teradata

Esta página descreve como configurar a Lakehouse Federation para executar consultas federadas em dados Teradata que não são geridos pelo Azure Databricks. Para saber mais sobre a Lakehouse Federation, consulte O que é a Lakehouse Federation?

Para se ligar à sua base de dados Teradata usando a Lakehouse Federation, deve criar o seguinte na sua metastore do Azure Databricks Unity Catalog (os espaços de trabalho criados após 9 de novembro de 2023 já têm uma metastore do Unity Catalog provisionada automaticamente):

  • Uma conexão ao seu banco de dados Teradata.
  • Um catálogo estrangeiro que espelha a sua base de dados Teradata no Unity Catalog, permitindo-lhe usar a sintaxe de consulta do Unity Catalog e as ferramentas de governação de dados para gerir o acesso dos utilizadores do Azure Databricks à base de dados.

Antes de começar

Antes de começar, certifique-se de que cumpre os requisitos desta secção.

Requisitos do Databricks

Requisitos do espaço de trabalho:

  • Espaço de trabalho habilitado para o Unity Catalog. Os espaços de trabalho criados após 9 de novembro de 2023 são ativados automaticamente para o Unity Catalog, incluindo o provisionamento automático de metastores. Não precisas de criar uma metastore manualmente a menos que o teu espaço de trabalho seja anterior à ativação automática e não tenha sido ativado para o Unity Catalog. Consulte Ativação automática do Unity Catalog.

Requisitos de computação:

  • Conectividade de rede do seu recurso de computação para os sistemas de banco de dados de destino. Consulte recomendações de rede para a Lakehouse Federation.
  • Azure Databricks cálculo deve utilizar o Databricks Runtime 16.1 ou superior e o modo de acesso Standard ou Dedicado.
  • Os armazéns SQL devem ser profissionais ou sem servidor e devem usar 2024.50 ou superior.

Permissões necessárias:

  • Para criar uma conexão, você deve ser um administrador de metastore ou um usuário com o privilégio de CREATE CONNECTION no metastore do Unity Catalog anexado ao espaço de trabalho. Nos espaços de trabalho que estavam ativados automaticamente para o Unity Catalog, os administradores de espaços de trabalho têm esse CREATE CONNECTION privilégio por defeito.
  • Para criar um catálogo estrangeiro, você deve ter a permissão CREATE CATALOG no metastore e ser o proprietário da conexão ou ter o privilégio de CREATE FOREIGN CATALOG na conexão. Nos espaços de trabalho que estavam ativados automaticamente para o Unity Catalog, os administradores de espaços de trabalho têm esse CREATE CATALOG privilégio por defeito.

Os requisitos de permissão adicionais são especificados em cada seção baseada em tarefas a seguir.

Autenticação Teradata

As ligações Teradata no Azure Databricks Lakehouse Federation suportam apenas o mecanismo de autenticação TD2 (a autenticação Teradata predefinida). O TD2 autentica os utilizadores com um nome de utilizador e palavra-passe geridos pela base de dados Teradata.

Outros mecanismos de autenticação Teradata, como LDAP, Kerberos e TDNEGO, não são suportados.

Teradata TLS

  • Pode escolher entre require, prefer, verify-ca, verify-full, disable modos para SSL. O prefer modo depende do servidor para permitir a encriptação (o número de porta pode ser configurado). Se estiver a usar TLS, qualquer uma das opções será suficiente (a porta será 443) (verify-ca e verify-full fortalecem a segurança da conexão, mas requerem mais configuração do lado do servidor). A Databricks recomenda aceitar SSL. Se o seu servidor não aceitar SSL, use o disable modo; usar require para tentar SSL quando não é suportado introduz sobrecarga de desempenho. Para obter mais informações, consulte Como proteger conexões usando TLS na documentação do Teradata.

Criar uma ligação Azure Databricks

Uma conexão especifica um caminho e credenciais para acessar um sistema de banco de dados externo. Para criar uma ligação, pode usar o Explorador de Catálogos ou o comando SQL CREATE CONNECTION num caderno de Azure Databricks ou o editor de consultas SQL do Databricks.

Note

Você também pode usar a API REST do Databricks ou a CLI do Databricks para criar uma conexão. Consulte POST /api/2.1/unity-catalog/connections e comandos do Unity Catalog.

Permissões necessárias: administrador da Metastore ou utilizador com o privilégio CREATE CONNECTION.

Explorador de Catálogos

  1. No seu espaço de trabalho Azure Databricks, clique em Data icon.Catalog.
  2. Na parte superior do painel Catálogo, clique no ícone Adicionar ou ícone de maisícone Adicionar e selecione Criar uma conexão no menu.
  3. Na página Noções básicas de conexão do assistente Configurar conexão, insira um nome de conexão amigável.
  4. Selecione um Tipo de conexão de Teradata.
  5. (Opcional) Adicione um comentário.
  6. Clique em Next.
  7. Na página de Autenticação , introduza as seguintes propriedades de ligação para a instância Teradata:
    • Host: Por exemplo, teradata-demo.teradata.com
    • Port: Por exemplo, 1025
    • User: Por exemplo, teradata_user
    • Palavra-passe: Por exemplo, password123
    • Modo SSL: require, prefer, verify-ca, verify-full, disable
  8. Clique em Criar conexão.
  9. Na página Noções básicas do catálogo , insira um nome para o catálogo estrangeiro. Um catálogo estrangeiro espelha uma base de dados num sistema de dados externo para que possas consultar e gerir o acesso aos dados dessa base de dados usando o Azure Databricks e o Unity Catalog.
  10. (Opcional) Clique em Teste de conexão para confirmar que funciona.
  11. Clique Criar catálogo.
  12. Na página Acesso, selecione os espaços de trabalho nos quais os utilizadores podem aceder ao catálogo que você criou. Você pode selecionar Todos os espaços de trabalho têm acessoou clicar em Atribuir a espaços de trabalho, selecione os espaços de trabalho e clique em Atribuir.
  13. Altere o Proprietário que poderá gerir o acesso a todos os objetos no catálogo. Comece a digitar um principal na caixa de texto e clique no principal nos resultados retornados.
  14. Conceder os privilégios no catálogo. Clique em Grant:
    1. Especifique os Principals que terão acesso aos objetos no catálogo. Comece a digitar um principal na caixa de texto e clique no principal nos resultados retornados.
    2. Selecione as predefinições de privilégio conceder a cada entidade de segurança. Todos os usuários da conta recebem BROWSE por padrão.
      • Selecione Leitor de Dados no menu suspenso para conceder read privilégios sobre objetos no catálogo.
      • Selecione Editor de Dados no menu suspenso para conceder os privilégios read e modify em objetos no catálogo.
      • Selecione manualmente os privilégios a conceder.
    3. Clique em Conceder.
  15. Clique em Next.
  16. Na página de Metadados , especifique os pares chave-valor de etiquetas. Para obter mais informações, consulte Aplicação de tags a objetos protegíveis do Unity Catalog.
  17. (Opcional) Adicione um comentário.
  18. Clique em Salvar.

SQL

Execute o seguinte comando em um bloco de anotações ou no editor de consultas Databricks SQL:

CREATE CONNECTION <connection-name> TYPE teradata
OPTIONS (
  host '<hostname>',
  port '<port>',
  user '<user>',
  password '<password>',
  ssl_mode '<ssl_mode>' -- optional
);

O Databricks recomenda que use Azure Databricks secrets em vez de strings de texto simples para valores sensíveis como credenciais. Por exemplo:

CREATE CONNECTION <connection-name> TYPE teradata
OPTIONS (
  host '<hostname>',
  port '<port>',
  user secret ('<secret-scope>','<secret-key-user>'),
  password secret ('<secret-scope>','<secret-key-password>'),
  ssl_mode '<ssl_mode>' -- optional
)

Se precisar usar cadeias de texto simples em comandos SQL de notebooks, evite truncar as cadeias de texto escapando caracteres especiais, como $ com \. Por exemplo: \$.

Para obter informações sobre como configurar segredos, consulte Gestão de segredos.

Criar um catálogo estrangeiro

Note

Se você usar a interface do usuário para criar uma conexão com a fonte de dados, a criação de catálogo estrangeiro será incluída e você poderá ignorar esta etapa.

Um catálogo estrangeiro espelha uma base de dados num sistema de dados externo para que possas consultar e gerir o acesso aos dados dessa base de dados usando o Azure Databricks e o Unity Catalog. Para criar um catálogo estrangeiro, use uma conexão com a fonte de dados que já foi definida.

Para criar um catálogo estrangeiro, pode usar o Explorador de Catálogos ou o comando SQL CREATE FOREIGN CATALOG num bloco de notas Azure Databricks ou o editor de consultas SQL. Você também pode usar a API REST do Databricks ou a CLI do Databricks para criar um catálogo. Consulte POST /api/2.1/unity-catalog/catalogs e comandos do Unity Catalog .

Permissões necessárias:CREATE CATALOG permissão no metastore e ou a propriedade da conexão ou o privilégio de CREATE FOREIGN CATALOG na conexão.

Explorador de Catálogos

  1. No seu espaço de trabalho Azure Databricks, clique em Data icon.Catalog para abrir o Explorador de Catálogos.

  2. Na parte superior do painel Catálogo , clique no ícone Adicionar ou mais ícone Adicionar e selecione Adicionar um catálogo no menu.

    Como alternativa, na página Acesso rápido, clique no botão Catálogos e, em seguida, clique no botão Criar catálogo.

  3. Siga as instruções para criar catálogos estrangeiros em Criar catálogos.

SQL

Execute o seguinte comando SQL em um bloco de anotações ou editor de consultas SQL. Os itens entre parênteses são opcionais. Substitua os valores de espaço reservado:

  • <catalog-name>: Nome do catálogo em Azure Databricks.
  • <connection-name>: O objeto de conexão que especifica a fonte de dados, o caminho e as credenciais de acesso.
  • <database-name>: Nome da base de dados que pretende espelhar como catálogo em Azure Databricks.
CREATE FOREIGN CATALOG [IF NOT EXISTS] <catalog-name> USING CONNECTION <connection-name>
OPTIONS (database '<database-name>');

Conformidade com ANSI

O conector Teradata utiliza TMODE=ANSI por defeito para todas as sessões a partir do Databricks Runtime 17.1. Esta configuração alinha o comportamento da comparação de strings e das operações numéricas com o dialeto ANSI SQL que o Azure Databricks usa por defeito. No modo ANSI, as comparações de cadeias são sensíveis a maiúsculas e minúsculas, enquanto no modo legado TERA do Teradata, são insensíveis a maiúsculas e minúsculas (por exemplo, 'ABC' = 'abc' avalia como verdadeiro). O comportamento legado pode produzir resultados inesperados quando consulta o Teradata a partir de uma computação do Azure Databricks com suporte para ANSI.

Importante

Se mudar para Databricks Runtime 17.1 ou posterior, Databricks SQL ou computação Serverless, o modo de sessão predefinido muda de TERA para ANSI. Isto pode afetar os resultados das consultas, especialmente para visões Teradata que dependem de correspondência de cadeias sem distinção entre maiúsculas e minúsculas. Por exemplo, uma vista com um filtro como WHERE status = 'Active' pode devolver resultados diferentes se os dados subjacentes contiverem 'ACTIVE' ou 'active' porque ANSI o modo os trata como valores diferentes.

Pushdowns suportados

A tabela a seguir lista as operações de pushdown suportadas para o Teradata, juntamente com o processamento necessário para cada uma.

Empurrão Computação suportada
Aggregates Apoiado Todos computam
Cast Apoiado Todos computam
Contém, Começa, Termina, Semelhante a Apoiado Todos computam
Filters Apoiado Todos computam
Limit Apoiado Todos computam
Projections Apoiado Todos computam
Joins Suportado Databricks Runtime 17.2 e superior, e SQL warehouses 2025.30 e superiores

Mapeamentos de tipo de dados

Quando você lê do Teradata para o Spark, os tipos de dados são mapeados da seguinte maneira:

Tipo de Teradata Tipo de faísca
Byte, Blob (conjunto de bytes) BinaryType
Byteint, Smallint, Inteiro IntegerType
BigInt LongType
Flutuador, Duplo, Dupla Precisão DoubleType
Número(n, m) DecimalType
Número(*, m), Número(*), Número Unsupported
Varchar(N) StringType
Hora, marca temporal TimestampType

Recursos adicionais