execução de consultas federadas sobre MySQL
Esta página descreve como configurar o Lakehouse Federation para executar consultas federadas em dados MySQL que não são gerenciados por Databricks. Para saber mais sobre a lakehouse Federation, consulte O que é a lakehouse Federation?
Para se conectar ao banco de dados MySQL usando a Lakehouse Federation, o senhor deve criar o seguinte no metastore Databricks Unity Catalog :
- Uma conexão com seu banco de dados MySQL.
- Um catálogo externo que espelha seu banco de dados MySQL no Unity Catalog para que o senhor possa usar a sintaxe de consulta do Unity Catalog e as ferramentas de governança de dados para gerenciar o acesso do usuário do Databricks ao banco de dados.
Antes de começar
Requisitos do workspace:
- Espaço de trabalho preparado para o Catálogo do Unity.
Requisitos de computação:
- Conectividade de rede do seu recurso compute para os sistemas de banco de dados de destino. Veja as recomendações do Networking para a Lakehouse Federation.
- Databricks compute O senhor deve usar Databricks Runtime 13.3 LTS ou acima e o modo de acesso Standard ou Dedicated .
- Os SQL warehouse devem ser Pro ou Serverless e devem utilizar a versão 2023.40 ou superior.
Permissões necessárias:
- Para criar uma conexão, é preciso ser administrador de metastore ou usuário com o privilégio CREATE CONNECTIONno metastore do Unity Catalog anexado ao espaço de trabalho.
- Para criar um catálogo externo é preciso ter a permissão CREATE CATALOGno metastore e ser proprietário da conexão ou ter o privilégioCREATE FOREIGN CATALOGna conexão.
Outros requisitos de permissão são definidos em cada seção baseada em tarefa a seguir.
O SSL é necessário para criar uma conexão.
Crie uma conexão
A conexão especifica um caminho e as credenciais para acessar um sistema de banco de dados externo. Para criar uma conexão, você pode usar o Catalog Explorer ou o comando CREATE CONNECTION do SQL em um Notebook do Databricks ou no editor de consultas SQL do Databricks.
O senhor também pode usar a API REST da Databricks ou a CLI da Databricks para criar uma conexão. Veja POST /api/2.1/unity-catalog/connections e Unity Catalog comando.
Permissões necessárias: Administrador do Metastore ou usuário com o privilégio CREATE CONNECTION.
- Catalog Explorer
- SQL
- 
Em seu site Databricks workspace, clique em Catalog . 
- 
Na parte superior do painel Catálogo , clique no ícone Adicionar e selecione Adicionar uma conexão no menu. Como alternativa, na página de acesso rápido , clique no botão Dados externos >, acesse a tab Conexões e clique em Criar conexão . 
- 
Na página Noções básicas de conexão do assistente de configuração de conexão , insira um nome de conexão fácil de usar. 
- 
Selecione um tipo de conexão do MySQL. 
- 
(Opcional) Adicione um comentário. 
- 
Clique em Avançar . 
- 
Na página Authentication (Autenticação ), insira as seguintes propriedades de conexão para sua instância do MySQL: - Anfitrião : Por exemplo, mysql-demo.lb123.us-west-2.rds.amazonaws.com
- Porto : Por exemplo, 3306
- Usuário : Por exemplo, mysql_user
- Senha : Por exemplo, password123
 
- Anfitrião : Por exemplo, 
- 
(Opcional): selecione Certificado de servidor confiável . Essa opção é desmarcada em default. Quando selecionada, a camada de transporte usa SSL para criptografar o canal e ignora a cadeia de certificados para validar a confiança. Deixe essa opção definida como default, a menos que o senhor tenha uma necessidade específica de ignorar a validação de confiança. 
- 
Clique em Criar conexão . 
- 
Na página Noções básicas do catálogo , insira um nome para o catálogo estrangeiro. Um catálogo externo espelha um banco de dados em um sistema de dados externo para que o senhor possa consultar e gerenciar o acesso aos dados desse banco de dados usando o Databricks e o Unity Catalog. 
- 
(Opcional) Clique em Testar conexão para confirmar se está funcionando. 
- 
Clique em Criar catálogo . 
- 
Na página Access (Acesso) , selecione o espaço de trabalho no qual os usuários podem acessar o catálogo que o senhor criou. O senhor pode selecionar All workspace have access (Todos os espaços de trabalho têm acesso ) ou clicar em Assign to workspace (Atribuir ao espaço de trabalho), selecionar o espaço de trabalho e clicar em Assign (Atribuir ). 
- 
Altere o proprietário que poderá gerenciar o acesso a todos os objetos no catálogo. começar a digitar um diretor na caixa de texto e, em seguida, clicar no diretor nos resultados retornados. 
- 
Conceda privilégios no catálogo. Clique em Conceder : - 
Especifique os diretores que terão acesso aos objetos no catálogo. começar a digitar um diretor na caixa de texto e, em seguida, clicar no diretor nos resultados retornados. 
- 
Selecione as predefinições de privilégios a serem concedidas a cada diretor. Todos os usuários de account recebem BROWSEpor default.- Selecione Leitor de dados no menu suspenso para conceder privilégios readem objetos no catálogo.
- Selecione Editor de dados no menu suspenso para conceder os privilégios reademodifyaos objetos no catálogo.
- Selecione manualmente os privilégios a serem concedidos.
 
- Selecione Leitor de dados no menu suspenso para conceder privilégios 
- 
Clique em Conceder . 
 
- 
- 
Clique em Avançar . 
- 
Na página Metadata (Metadados ), especifique as tags em key-value. Para obter mais informações, consulte Apply tags to Unity Catalog securable objects. 
- 
(Opcional) Adicione um comentário. 
- 
Clique em Salvar . 
Execute o seguinte comando em um notebook ou no editor de consultas SQL do Databricks.
CREATE CONNECTION <connection-name> TYPE mysql
OPTIONS (
  host '<hostname>',
  port '<port>',
  user '<user>',
  password '<password>'
);
Recomendamos que o senhor use Databricks segredos em vez de texto simples strings para valores confidenciais, como credenciais. Por exemplo:
CREATE CONNECTION <connection-name> TYPE mysql
OPTIONS (
  host '<hostname>',
  port '<port>',
  user secret ('<secret-scope>','<secret-key-user>'),
  password secret ('<secret-scope>','<secret-key-password>')
)
Se o senhor precisar usar o texto simples strings no Notebook SQL comando, evite truncar as cadeias de caracteres escapando de caracteres especiais como $ com \. Por exemplo: \$.
Para obter informações sobre a configuração de segredos, consulte Gerenciamento de segredos.
Crie um catálogo estrangeiro
Se o senhor usar a interface do usuário para criar uma conexão com a fonte de dados, a criação do catálogo externo estará incluída e o senhor poderá ignorar essa etapa.
Um catálogo externo espelha um banco de dados em um sistema de dados externo para você consultar e gerenciar o acesso aos dados nesse banco de dados com Databricks e Unity Catalog. Para criar um catálogo externo, utiliza-se uma conexão com a fonte de dados que já foi definida.
Para criar um catálogo externo, o senhor pode usar o Catalog Explorer ou o comando CREATE FOREIGN CATALOG SQL em um Notebook Databricks ou o editor de consultas Databricks SQL. O senhor também pode usar a API REST da Databricks ou a CLI da Databricks para criar um catálogo. Veja POST /api/2.1/unity-catalog/catalogs e Unity Catalog comando.
Permissões necessárias: permissão CREATE CATALOG na metastore e propriedade da conexão ou o privilégio CREATE FOREIGN CATALOG na conexão.
- Catalog Explorer
- SQL
- 
Em seu site Databricks workspace, clique em Catalog para abrir o Catalog Explorer. 
- 
Na parte superior do painel Catálogo , clique no ícone Adicionar e selecione Adicionar um catálogo no menu. Como alternativa, na página de acesso rápido , clique no botão Catálogos e no botão Criar catálogo . 
- 
Siga as instruções para criar catálogos estrangeiros em Criar catálogos. 
Execute o seguinte comando SQL em um notebook ou no editor Databricks SQL. Os itens entre colchetes são opcionais. Substitua os valores temporários:
- <catalog-name>: Nome para o catálogo no Databricks.
- <connection-name>: O objeto de conexão que especifica a fonte de dados, o caminho e as credenciais de acesso.
CREATE FOREIGN CATALOG [IF NOT EXISTS] <catalog-name> USING CONNECTION <connection-name>;
Pushdowns suportados
Os seguintes pushdowns são suportados em todos os sites compute:
- Filtros
- Projeções
- Limite
- Funções: parciais, somente para expressões de filtro. (funções de cadeias de caracteres, funções matemáticas, funções de data, hora e registro de data e hora e outras funções diversas, como Alias, Cast, SortOrder)
Os seguintes pushdowns são suportados em Databricks Runtime 13.3 LTS e acima, e em SQL warehouse:
- Agregados
- Boolean operadores
- As seguintes funções matemáticas (não suportadas se o ANSI estiver desativado): +, -, *,%,/
- Classificação, quando usada com limite
Os seguintes pushdowns não são suportados:
- unir-se
- Funções do Windows
Mapeamentos de tipos de dados
Quando o senhor lê do MySQL para o Spark, os tipos de dados são mapeados da seguinte forma:
| Tipo de MySQL | Spark tipo | 
|---|---|
| bigint (se não for assinado), decimal | Tipo decimal | 
| tinyint*, int, inteiro, mediumint, smallint | Tipo de número inteiro | 
| tintura (1) | Tipo booleano | 
| bigint (se assinado) | Tipo longo | 
| Float | Tipo de flutuação | 
| double | Tipo duplo | 
| char, enum, definir | Tipo de caractere | 
| varchar | Tipo de gráfico VAR | 
| JSON, longtext, mediumtext, text, tinytext | Tipo de string | 
| binário, blob, varbinary, binário varchar | Tipo binário | 
| bit, booleano | Tipo booleano | 
| data, ano | Tipo de data | 
| data e hora, hora, carimbo de data/hora** | Tipo de carimbo de data/tipo de carimbo de data/hora NTZ | 
*tinyint(1) signed e tinyint(1) unsigned são tratados como booleanos e convertidos em BooleanType. Consulte Referência do conector/J na documentação do MySQL.
** Quando o senhor lê em MySQL, MySQL Timestamp é mapeado para Spark TimestampType se preferTimestampNTZ = false (default). O MySQL Timestamp é mapeado para TimestampNTZType se preferTimestampNTZ = true.