Exportações Sqoop Usando o Update e Atualização Inserir Approach
Com o modo de inserção, registros exportados pelo Sqoop são acrescentados ao final da tabela de destino. Sqoop também fornece um modo de atualização que você pode usar, fornecendo a --update-chave argumento de linha de comando. Esta ação faz com que Sqoop para gerar um SQL ATUALIZAR declaração para ser executado no RDBMS ou data warehouse.
Suponha que você deseja atualizar uma tabela de três colunas com os dados armazenados no arquivo HDFS / / My-hdfs-arquivo de usuário. O arquivo contém esses dados:
100, 1000, 2000
O comando a seguir abreviado Sqoop exportação gera o SQL correspondente ATUALIZAR declaração sobre o seu sistema de banco de dados:
$ Sqoop exportação (Argumentos Genéricos) - tabela de destino relacional-table - update-chave column1 - export-dir /user/my-hdfs-file...Generates => target-relacional-UPDATE tabela SETcolumn2 = 1000 , column3 = 2000WHERE column1 = 100-
Com o comando de exportação anterior, se o target-relacional de mesa em seu RDBMS ou armazém de dados do sistema não tem nenhum registro com o valor correspondente na column1, nada é alterado no target-relacional de mesa.
No entanto, você pode também incluir um outro argumento que insere ou acrescenta os seus dados para meta-table se nenhum registro correspondente for encontrado. Pense nisso desta maneira: Se existe ATUALIZAÇÃO outra INSERIR.
Esta técnica é muitas vezes referida como upsert no vernáculo de banco de dados ou como MERGE em outras implementações. O argumento para o modo upsert é --update-mode , Onde updateonly é o padrão e allowinsert ativa upsert modo. Verifique a documentação do banco de dados ou consultar com seu vender para determinar se o modo upsert é suportado com Apache Sqoop.