O Apache Sqoop transfere grandes volumes de dados entre o Apache Hadoop e conjuntos de dados estruturados, como bancos de dados relacionais. Use essa ferramenta para mover dados entre MySQL, Hadoop Distributed File System (HDFS), Hive e Object Storage Service (OSS) em clusters EMR.
Execute todos os comandos no nó mestre do cluster.
Cenários suportados
Importar dados do MySQL para o HDFS
sqoop import --connect <dburi>/<dbname> --username <username> --password <password> \
--table <tablename> --target-dir <hdfs-dir> \
--split-by <split-column> \
--check-column <col> --incremental <mode> --last-value <value>
|
Parâmetro |
Obrigatório |
Descrição |
|
|
Sim |
URL de acesso ao banco de dados. Exemplo: jdbc:mysql://192.168..:3306/ |
|
|
Sim |
Nome do banco de dados |
|
|
Sim |
Nome de usuário para autenticação no banco de dados |
|
|
Sim |
Senha para autenticação no banco de dados |
|
|
Sim |
Nome da tabela MySQL |
|
|
Sim |
Diretório HDFS de destino para gravação dos dados. Exemplo: |
|
|
Não |
Coluna usada para dividir tarefas paralelas. O padrão é a coluna de chave primária |
|
|
Não |
Coluna usada para identificar linhas na importação incremental |
|
|
Não |
Modo de importação incremental. Valores válidos: |
|
|
Não |
Valor máximo da coluna obtido na importação incremental anterior |
Para consultar a referência completa de parâmetros, veja a seção Syntax no Guia do Usuário do Sqoop.
Importar dados do HDFS para o MySQL
Antes de executar este comando, crie uma tabela no MySQL cujo esquema corresponda à estrutura dos dados no HDFS.
sqoop export --connect <dburi>/<dbname> --username <username> --password <password> \
--table <tablename> --export-dir <hdfs-dir>
|
Parâmetro |
Obrigatório |
Descrição |
|
|
Sim |
URL de acesso ao banco de dados. Exemplo: jdbc:mysql://192.168..:3306/ |
|
|
Sim |
Nome do banco de dados |
|
|
Sim |
Nome de usuário para autenticação no banco de dados |
|
|
Sim |
Senha para autenticação no banco de dados |
|
|
Sim |
Nome da tabela MySQL |
|
|
Sim |
Diretório de origem no HDFS. Exemplo: |
Para consultar a referência completa de parâmetros, veja a seção Syntax no Guia do Usuário do Sqoop.
Importar dados do Hive para o MySQL
As tabelas do Hive são armazenadas como arquivos no HDFS. Para exportar uma tabela do Hive para o MySQL, use o mesmo comando sqoop export descrito em Importar dados do HDFS para o MySQL, especificando o diretório HDFS da tabela Hive no parâmetro --export-dir.
Importar dados do MySQL para o Hive
sqoop import --connect <dburi>/<dbname> --username <username> --password <password> \
--table <tablename> \
--check-column <col> --incremental <mode> --last-value <value> \
--fields-terminated-by "\t" --lines-terminated-by "\n" \
--hive-import --target-dir <hdfs-dir> --hive-table <hive-tablename>
|
Parâmetro |
Obrigatório |
Descrição |
|
|
Sim |
URL de acesso ao banco de dados. Exemplo: jdbc:mysql://192.168..:3306/ |
|
|
Sim |
Nome do banco de dados |
|
|
Sim |
Nome de usuário para autenticação no banco de dados |
|
|
Sim |
Senha para autenticação no banco de dados |
|
|
Sim |
Nome da tabela MySQL |
|
|
Sim |
Diretório intermediário de preparação (staging) no HDFS. Exemplo: |
|
|
Sim |
Nome da tabela Hive de destino |
|
|
Não |
Coluna usada para identificar linhas na importação incremental |
|
|
Não |
Modo de importação incremental. Valores válidos: |
|
|
Não |
Valor máximo da coluna obtido na importação incremental anterior |
Para consultar a referência completa de parâmetros, veja a seção Syntax no Guia do Usuário do Sqoop.
Importar dados do MySQL para o OSS
sqoop import --connect <dburi>/<dbname> --username <username> --password <password> \
--table <tablename> --target-dir <oss-dir> --temporary-rootdir <oss-tmpdir> \
--check-column <col> --incremental <mode> --last-value <value>
|
Parâmetro |
Obrigatório |
Descrição |
|
|
Sim |
URL de acesso ao banco de dados. Exemplo: jdbc:mysql://192.168..:3306/ |
|
|
Sim |
Nome do banco de dados |
|
|
Sim |
Nome de usuário para autenticação no banco de dados |
|
|
Sim |
Senha para autenticação no banco de dados |
|
|
Sim |
Nome da tabela MySQL |
|
|
Sim |
Diretório de destino no OSS. Exemplo: |
|
|
Obrigatório se |
Diretório temporário no OSS. Quando o |
|
|
Não |
Coluna usada para identificar linhas na importação incremental |
|
|
Não |
Modo de importação incremental. Valores válidos: |
|
|
Não |
Valor máximo da coluna obtido na importação incremental anterior |
Para consultar a referência completa de parâmetros, veja a seção Syntax no Guia do Usuário do Sqoop.
Importar dados do OSS para o MySQL
Antes de executar este comando, crie uma tabela no MySQL cujo esquema corresponda à estrutura dos dados no OSS.
sqoop export --connect <dburi>/<dbname> --username <username> --password <password> \
--table <tablename> --export-dir <oss-dir>
|
Parâmetro |
Obrigatório |
Descrição |
|
|
Sim |
URL de acesso ao banco de dados. Exemplo: jdbc:mysql://192.168..:3306/ |
|
|
Sim |
Nome do banco de dados |
|
|
Sim |
Nome de usuário para autenticação no banco de dados |
|
|
Sim |
Senha para autenticação no banco de dados |
|
|
Sim |
Nome da tabela MySQL |
|
|
Sim |
Diretório de origem no OSS. Exemplo: |
Para consultar a referência completa de parâmetros, veja a seção Syntax no Guia do Usuário do Sqoop.
Usar uma instrução SQL para importar dados
Use o parâmetro --query para filtrar linhas com uma instrução SQL personalizada em vez de importar uma tabela inteira.
sqoop import --connect <dburi>/<dbname> --username <username> --password <password> \
--query <query-sql> --split-by <sp-column> \
--hive-import --hive-table <hive-tablename> --target-dir <hdfs-dir>
|
Parâmetro |
Obrigatório |
Descrição |
|
|
Sim |
URL de acesso ao banco de dados. Exemplo: jdbc:mysql://192.168..:3306/ |
|
|
Sim |
Nome do banco de dados |
|
|
Sim |
Nome de usuário para autenticação no banco de dados |
|
|
Sim |
Senha para autenticação no banco de dados |
|
|
Sim |
Instrução SQL para selecionar os dados a serem importados. Deve incluir |
|
|
Sim |
Coluna usada para dividir tarefas paralelas. Geralmente é a chave primária da tabela MySQL |
|
|
Sim |
Diretório intermediário de preparação (staging) no HDFS. Exemplo: |
|
|
Sim |
Nome da tabela Hive de destino |
Para consultar a referência completa de parâmetros, veja a seção Syntax no Guia do Usuário do Sqoop.