Este tópico descreve os recursos e o suporte para sincronizar dados do Databricks com o DataWorks.
Notas de uso
-
Limites
Grupo de recursos: o Databricks Reader oferece suporte apenas a Serverless resource groups. Configure Internet NAT gateway e um EIP para a VPC vinculada ao grupo de recursos.
Modo de leitura: a sincronização de dados oferece suporte apenas à leitura por meio de
JDBC.-
Tipo de catálogo e limites de recursos: para testar a conectividade da fonte de dados ou configurar uma tarefa de sincronização no modo assistente, o DataWorks usa
databricks-sdkpara chamar a API REST do Databricks, que oferece suporte apenas ao Unity Catalog. Se o seu catálogo, comohive_metastore, não for o Unity Catalog, esses recursos ficarão indisponíveis. Escolha uma das seguintes opções:Opção 1 (recomendada): migrar para o Unity Catalog. O Databricks recomenda a migração dos seus dados e metadados para o Unity Catalog para usar todos os recursos do DataWorks. Para obter instruções, consulte Migrar para o Unity Catalog.
Opção 2: usar o modo de script diretamente. Após configurar a fonte de dados no DataWorks, ignore Test Connectivity e use script mode para desenvolver a tarefa de sincronização.
-
Leituras simultâneas e consistência de dados
O Databricks Reader usa
splitPkpara dividir os dados e iniciar tarefas simultâneas para uma sincronização mais rápida. Observe o seguinte:As tarefas simultâneas não fazem parte da mesma transação de banco de dados e não começam exatamente ao mesmo tempo.
Se a fonte de dados ainda estiver recebendo gravações, as leituras simultâneas podem produzir um snapshot incompleto ou inconsistente.
Soluções alternativas: limitações técnicas impedem um snapshot perfeitamente consistente em várias threads. Escolha uma destas abordagens com base na sua carga de trabalho:
Opção 1: use a sincronização de thread única sem divisão de dados (
splitPk). Isso fornece consistência estrita, mas é mais lento.Opção 2: mantenha a fonte de dados estática durante a sincronização, por exemplo, bloqueando a tabela, desativando temporariamente as gravações do aplicativo ou pausando a sincronização de réplicas. Isso é mais rápido, mas pode afetar o tráfego de produção.
-
Codificação
O Databricks Reader extrai dados com JDBC, que detecta e converte automaticamente as codificações entre bancos de dados. Você não precisa configurar a codificação manualmente.
-
Sincronização incremental
O Databricks Reader extrai dados ao executar uma instrução
SELECT ... WHERE .... A sincronização incremental depende da construção da condiçãoWHERE.-
Abordagem recomendada (campo de timestamp):
Adicione um campo de timestamp, como
modify_time, à tabela source.Sempre que o aplicativo inserir ou atualizar um registro, incluindo uma exclusão lógica, atualize também o campo de timestamp.
Use o campo de timestamp na condição
WHEREda tarefa para buscar alterações desde o último ponto de sincronização.
Caso não compatível: se a tabela de negócios não tiver um campo que distinga registros inseridos ou atualizados, como um timestamp ou ID de incremento automático, o Databricks Reader não poderá sincronizar incrementalmente e deverá executar a sincronização completa.
-
Tipos de campo suportados
Para leituras offline, o Databricks Reader oferece suporte à maioria dos tipos do Databricks, mas alguns tipos não são compatíveis. Verifique os tipos dos seus campos.
A tabela a seguir lista as conversões de tipo suportadas pelo Databricks Reader.
|
Categoria de tipo |
Tipo de dados do Databricks |
|
Inteiro |
TINYINT, SMALLINT, INT, BIGINT |
|
Ponto flutuante |
FLOAT, DOUBLE, DECIMAL |
|
String |
STRING |
|
Data e hora |
DATE, TIMESTAMP, TIMESTAMP_NTZ |
|
Booleano |
BOOLEAN |
|
Tipo complexo |
ARRAY, MAP, STRUCT |
|
Outros tipos |
INTERVAL, BINARY, GEOGRAPHY(srid), GEOMETRY(srid) |
Crie uma fonte de dados
Antes de desenvolver uma tarefa de sincronização de dados, crie a fonte de dados correspondente no DataWorks. Para o procedimento, consulte Data source configuration.As explicações dos parâmetros de configuração estão disponíveis na interface de configuração..
Desenvolva uma tarefa de sincronização de dados
Consulte os guias a seguir para obter pontos de entrada. Configure a tarefa de sincronização seguindo as etapas comuns indicadas.
Guia de configuração de sincronização offline de tabela única
Para o procedimento, consulte Configure an offline synchronization task in wizard mode e Configure an offline synchronization task in script mode.
Para todos os parâmetros do modo de script e um script de exemplo, consulte Appendix: Sample script and parameter descriptions.
Perguntas frequentes
-
P: Uma leitura falha com [Databricks]JDBCDriver Error getting the data value from result set: Column13:[Databricks]JDBCDriver Error in fetching data rows: Timestamp Conversion has failed.
R: Os valores TIMESTAMP do Databricks podem estar fora do intervalo suportado pelo Java Timestamp, causando um erro no driver JDBC. Modifique a configuração de
column, por exemplo"column": ["CAST(col_timestamp AS STRING)"].
Apêndice: Script de exemplo e descrições de parâmetros
Configuração de script de tarefa offline
Se você usar o modo de script para uma tarefa offline, escreva os parâmetros necessários no formato de script padrão. Para obter detalhes, consulte Configure an offline synchronization task in script mode. A seguir, descrevemos os parâmetros da fonte de dados no modo de script.
Script do Reader de exemplo
{
"type": "job",
"version": "2.0",
"steps": [
{
"stepType": "databricks",
"parameter": {
"datasource": "databricks",
"schema": "schema1",
"table": "table1",
"readMode": "jdbc",
"where": "id>1",
"splitPk": "id",
"column": [
"c1",
"c2"
]
},
"name": "Reader",
"category": "reader"
},
{
"stepType": "stream",
"parameter": {},
"name": "Writer",
"category": "writer"
}
],
"setting": {
"errorLimit": {
"record": "0"
},
"speed": {
"concurrent": 1
}
}
}
Parâmetros do script do Reader
Parâmetro | Descrição | Obrigatório | Valor padrão |
datasource | Nome da fonte de dados. O modo de script oferece suporte à adição de fontes de dados; este valor deve corresponder ao nome da fonte de dados adicionada. | Sim | Nenhum |
column | Lista de nomes de colunas a serem sincronizadas da tabela configurada, expressa como um array JSON.
Por exemplo:
Especifique explicitamente um conjunto não vazio de colunas em column. | Sim | Nenhum |
splitPk | Especifique
| Não | Nenhum |
where | Condição de filtro. O Databricks Reader a combina com | Não | Nenhum |
schema | Esquema que contém os dados a serem sincronizados. | Sim | Nenhum |
table | Tabela selecionada para sincronização. Cada job oferece suporte a uma tabela. | Sim | Nenhum |
readMode | Modo de leitura. Atualmente, apenas JDBC é suportado. | Não | jdbc |