O Vertica é um banco de dados orientado a colunas que usa arquitetura de processamento massivamente paralelo (MPP). A source de dados Vertica fornece canais bidirecionais para leitura e escrita. Este tópico descreve os recursos de sincronização de dados da source de dados Vertica no DataWorks.
Versões compatíveis
O Vertica Reader conecta-se ao Vertica pelo driver JDBC do Vertica. Verifique se a versão do driver é compatível com o serviço Vertica. O DataWorks usa a versão 7.1.2 do driver JDBC:
<dependency>
<groupId>com.vertica</groupId>
<artifactId>vertica-jdbc</artifactId>
<version>7.1.2</version>
</dependency>
Limites
As sources de dados Vertica funcionam apenas com Grupos de recursos Serverless (recomendado) e grupos de recursos exclusivos para Data Integration.
O Vertica Writer não oferece suporte ao parâmetro
writeMode.Configure as tarefas apenas no editor de código.
Tipos de campo compatíveis
O sistema aceita tipos de dados comuns do Vertica: inteiro, ponto flutuante, string e tempo. O suporte a tipos de dados avançados é limitado.
Adicionar uma source de dados
Antes de desenvolver uma tarefa de sincronização, adicione a source de dados Vertica ao DataWorks. Para obter instruções, consulte Gerenciamento de sources de dados.
O console do DataWorks também exibe as descrições dos parâmetros durante a adição da source de dados.
Desenvolver uma tarefa de sincronização de dados
Configure as tarefas de sincronização de dados do Vertica no editor de código. As seções a seguir abordam o formato do script, os parâmetros e exemplos.
Configure uma tarefa de sincronização offline para uma única tabela
Para o procedimento de configuração, consulte Configure uma tarefa no editor de código.
Para todos os parâmetros e exemplos de script, consulte a seção Apêndice: Exemplos de script e descrições de parâmetros.
Apêndice: Exemplos de script e descrições de parâmetros
Configure uma tarefa de sincronização em lote usando o editor de código
O script deve seguir o formato unificado para tarefas de sincronização em lote. Para requisitos de formato, consulte Configure uma tarefa no editor de código.
Exemplo de script do Reader
{
"type": "job",
"version": "2.0",
"steps": [
{
"stepType": "vertica",
"parameter": {
"datasource": "", // The data source name.
"column": [ // The columns to read.
"id",
"name"
],
"where": "",
"splitPk": "id",
"connection": [
{
"table": [ // The source table name.
"table"
]
}
]
},
"name": "Reader",
"category": "reader"
},
{
"stepType": "stream",
"parameter": {
"print": false,
"fieldDelimiter": ","
},
"name": "Writer",
"category": "writer"
}
],
"order": {
"hops": [
{
"from": "Reader",
"to": "Writer"
}
]
},
"setting": {
"errorLimit": {
"record": "0" // Maximum number of error records allowed.
},
"speed": {
"throttle": true, // Set to true to enable rate limiting; set to false to disable.
"concurrent": 1, // Number of concurrent jobs.
"mbps": "12" // Maximum transmission rate. 1 mbps = 1 MB/s.
}
}
}
Parâmetros do script do Reader
|
Parâmetro |
Descrição |
Obrigatório |
Valor padrão |
Exemplo |
|
|
Nome da source de dados. Deve corresponder ao nome da source de dados adicionada no editor de código. |
Sim |
Nenhum |
|
|
|
Tabelas de origem para leitura, especificadas como um array JSON. É possível ler várias tabelas simultaneamente, mas todas devem ter o mesmo schema. O Vertica Reader não verifica a consistência do schema. Insira o parâmetro |
Sim |
Nenhum |
|
|
|
Colunas a serem lidas das tabelas de origem, especificadas como um array JSON. Use |
Sim |
Nenhum |
|
|
|
Coluna usada para particionar dados em leituras concorrentes. Utilize a chave primária para garantir distribuição uniforme e evitar pontos de congestão. Apenas colunas inteiras são aceitas; colunas do tipo string, ponto flutuante e data não são suportadas. Se deixado em branco, a leitura ocorre por um único canal, sem particionamento. |
Não |
Nenhum |
|
|
|
Condição de filtro. O Vertica Reader usa os parâmetros |
Não |
Nenhum |
|
|
|
Consulta SQL personalizada para cenários avançados de filtragem em que apenas |
Não |
Nenhum |
|
|
|
Quantidade de registros buscados do banco de dados em cada lote. Aumentar esse valor reduz as idas e vindas na rede e melhora o desempenho da extração. Definir |
Não |
1024 |
|
Exemplo de script do Writer
{
"type": "job",
"version": "2.0",
"steps": [
{
"stepType": "stream",
"parameter": {},
"name": "Reader",
"category": "reader"
},
{
"stepType": "vertica",
"parameter": {
"datasource": "data_source_name",
"column": [ // The destination columns.
"id",
"name"
],
"connection": [
{
"table": [ // The destination table name.
"vertica_table"
]
}
],
"preSql": [ // SQL to run before the write task starts.
"delete from @table where db_id = -1"
],
"postSql": [ // SQL to run after the write task completes.
"update @table set db_modify_time = now() where db_id = 1"
]
},
"name": "Writer",
"category": "writer"
}
],
"setting": {
"errorLimit": {
"record": "0" // Maximum number of error records allowed.
},
"speed": {
"throttle": true, // Set to true to enable rate limiting; set to false to disable.
"concurrent": 1, // Number of concurrent jobs.
"mbps": "12" // Maximum transmission rate. 1 mbps = 1 MB/s.
}
},
"order": {
"hops": [
{
"from": "Reader",
"to": "Writer"
}
]
}
}
Parâmetros do script do Writer
|
Parâmetro |
Descrição |
Obrigatório |
Valor padrão |
Exemplo |
|
|
Nome da source de dados. Deve corresponder ao nome da source de dados adicionada no editor de código. |
Sim |
Nenhum |
|
|
|
URL JDBC do banco de dados Vertica de destino, especificada dentro do bloco |
Sim |
Nenhum |
|
|
|
Nome de usuário para autenticação na source de dados. |
Sim |
Nenhum |
|
|
|
Senha correspondente ao nome de usuário especificado. |
Sim |
Nenhum |
|
|
|
Tabelas de destino para gravação, especificadas como um array JSON dentro do bloco |
Sim |
Nenhum |
|
|
|
Colunas de destino para gravação de dados, separadas por vírgulas. |
Sim |
Nenhum |
|
|
|
Instrução SQL executada antes da gravação dos dados na tabela de destino. Use |
Não |
Nenhum |
|
|
|
Instrução SQL executada após a gravação dos dados na tabela de destino. |
Não |
Nenhum |
|
|
|
Número de registros confirmados em cada lote. Valores maiores reduzem as idas e vindas na rede e aumentam o throughput, mas definir um valor muito alto pode causar erro OOM. |
Não |
1024 |
|