Este tópico descreve como usar o Apache Sqoop em um cluster E-MapReduce (EMR) para ler e gravar dados armazenados no OSS-HDFS.
Pré-requisitos
Crie um cluster EMR com a versão V3.42.0 ou posterior, ou V5.8.0 ou posterior, e selecione o componente Sqoop. Para mais informações, consulte Criar um cluster.
Ative o OSS-HDFS e conceda as permissões de acesso necessárias. Para mais informações, consulte Ativar o OSS-HDFS.
Procedimento
-
Conecte-se ao cluster EMR.
Faça login no console EMR. No painel de navegação à esquerda, clique em EMR on ECS.
Clique em o cluster EMR criado.
Clique em a aba Nodes e clique em o ícone
à esquerda do grupo de nós.Clique em o ID da ECS. Na página Instances, clique em Connect ao lado do ID da instância.
Para fazer login no cluster em um ambiente Windows ou Linux com par de chaves SSH ou senha, consulte Fazer login em um cluster.
-
Importe dados do OSS-HDFS para o MySQL.
sudo 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> --as-<format> -m <count>-
A tabela a seguir descreve os parâmetros do comando.
Parâmetro
Obrigatório
Descrição
dburi
Sim
URI de conexão do banco de dados. Exemplo:
jdbc:mysql://192.168.xxx.xxx:3306/.dbname
Sim
Nome do banco de dados.
username
Sim
Nome de usuário para login no banco de dados.
password
Sim
Senha do usuário do banco de dados.
tablename
Sim
Nome da tabela MySQL.
oss-dir
Sim
Diretório de destino no OSS-HDFS para os dados importados. Exemplo:
oss://examplebucket.cn-hangzhou.oss-dls.aliyuncs.com/dir/.oss-tmpdir
Não
Diretório temporário para o trabalho de importação. Obrigatório para o modo de importação incremental 'append'.
Se o parâmetro mode for definido como append, o Apache Sqoop importa os dados para um diretório temporário e depois renomeia e armazena os arquivos no diretório de destino. Se o diretório de destino já existir no OSS-HDFS, o Apache Sqoop não importará dados nem sobrescreverá o conteúdo existente.
col
Não
Coluna de verificação para importação incremental.
mode
Não
Modo de importação incremental. Valores válidos:
appendelastmodified.-
append: importa dados incrementalmente com base em uma coluna de incremento automático. -
lastmodified: importa dados incrementalmente com base em uma coluna de carimbo de data/hora.
value
Não
Valor máximo da coluna de verificação da importação incremental anterior.
format
Não
Formato do arquivo de saída. Valores válidos:
avrodatafile,sequencefile,textfile(padrão) eparquetfile.count
Não
Número de tarefas MapReduce.
-
-
Exemplo
O código abaixo mostra como importar dados de um diretório específico do examplebucket para a tabela src_kv no MySQL:
sqoop import --connect jdbc:mysql://master-1-1/sqoop_test --username root --password password1 --table src_kv -m 1 --target-dir oss://examplebucket.cn-hangzhou.oss-dls.aliyuncs.com/tmp/sqoop_kv --as-parquetfile
-