Importar dados para hdfs com sqoop

Imagine um banco de dados relacional usado por uma empresa de serviços de ficção que tem vindo a tomar (você adivinhou) chamadas de serviço Apache Hadoop e agora quer se mudar alguns de seus dados para Hadoop para executar consultas colméia, alavancagem HBase escalabilidade e desempenho, e executar análise de texto em descrições de problemas de seus clientes.

Video: Sqoop 3: How to import tables into Hadoop using Sqoop

Sqoop é a ferramenta que você deseja usar para importar dados de tabelas relacionais em tabelas HBase no Hadoop.

Na seguinte lista, você pode ver os comandos MySQL usados ​​para construir a base de dados Ordem de Serviço que você vê na figura. Instalado é um RDBMS MySQL que você pode importar e exportar a usar Sqoop.

/ * Criar a ordens de serviço de banco de dados * / criar banco de dados serviceorderdb-USE serviceorderdb - / * Criar a tabela Informações sobre o produto * / CRIAR productinfo TABLE (productnum CHAR (4) CHAVE PRIMÁRIA, productdesc VARCHAR (100)) - / * Criar a Customer Contact Tabela de informações * / CREATE TABLE customercontactinfo (customernum INT PRIMÁRIA CHAVE, CustomerName VARCHAR (100), contactinfo VARCHAR (100), productnums SET ( `A100`, `A200`, `A300`, `B400`, `B500`, `C500 `, `C600`, `D700`)) - / * Criar a ordens de serviço de mesa * / CRIAR serviceorders mesa (serviceordernum INT PRIMARY KEY, INT customernum, productnum CHAR (4), estado VARCHAR (100), FOREIGN KEY (customernum) Referências customercontactinfo (customernum), FOREIGN KEY (productnum) Referências ProductInfo (productnum)) - / * Inserir os dados do produto na tabela Informações sobre o produto * / inserir valores ProductInfo ( `A100`, `HBase Suporte ao Produto`) - inserir valores ProductInfo ( `A200`, `Hive Suporte ao Produto`) - inserir valores ProductInfo ( `A300`, `Sqoop Suporte ao Produto`) - INSERT INTO ProductInfo VALUES ( `B400`, `Ambari suporte ao produto`) - inserir valores ProductInfo ( `B500`, `HDFS Suporte ao Produto`) - inserir valores ProductInfo ( `C500`, `Mahout suporte ao produto`) - inserir valores ProductInfo ( `C600`, `Zookeeper Suporte ao Produto`) - inserir valores ProductInfo ( `D700`, `Pig Suporte ao Produto`) - / * Inserir os dados do cliente para o Customer Contact Information Table * / INSERT INTO customercontactinfoVALUES (10000, `John Timothy Smith ` `1 Hadoop Lane, NY, 11111, Joao.Sousa @ xyz.com`, `B500`) - INSERT INTO customercontactinfoVALUES (10001, `Bill Jones`, `2 HBase Ave, CA, 22222`,` A100, A200, A300, B400, B500, C500, C600, D700 `) - INSERT INTO customercontactinfoVALUES (20000, `Jane Ann Doe`, `1 Especialista HBase Ave, CA, 22222`,` A100, A200, A300` ) - INSERT INTO customercontactinfoVALUES (20001, `Joe desenvolvedor`, `1 PigLatin Ave, CO, 33333`, `D700`) - INSERT INTO customercontactinfoVALUES (30000, `cientista dados`, `1 Estatísticas Lane, MA, 33333`, `A300, C500` ) - / * Digite ordens de serviço para o Serviço o rders tabela * / INSERT INTO serviceordersVALUES (100000, 20000, `A200`, `Eu tenho algumas perguntas sobre a construção de consultas HiveQL? Meu Hadoop para Dummies livro ainda não chegou! `) - INSERT INTO serviceordersVALUES (100001, 10001, `A100`, `Eu preciso entender como configurar Zookeeper para o meu HBase Cluster`?) - INSERT INTO serviceordersVALUES (200000, 20001, `D700`, `Eu estou escrevendo alguns PigLatin e eu tenho algumas perguntas?`) - INSERT INTO serviceordersVALUES (200001, 30000, `A300`, `Como faço para mesclar meus conjuntos de dados após importações incrementais Sqoop?`) -

A listagem a seguir confirma que o banco de dados MySQL ordem de serviço foi criado usando os comandos mostrados anteriormente, e mostra os nomes de tabela que você vai importar de usar Sqoop.

Video: How to Import data from mysql to Hadoop using Sqoop

mysqlgt; mostrar tabelas - + -------------------------- + | Tables_in_serviceorderdb | + -------------------------- + | customercontactinfo || productinfo || serviceorders | + -------------------------- + 3 linhas no set (0.00 sec)

Agora que você já viu os registros de banco de dados MySQL ordem de serviço que estão apenas esperando para ser explorado, é hora de voltar sua atenção para Hadoop e executar o seu primeiro comando Sqoop.

Video: Hadoop Ceritfication - 01 Sqoop import delimiters

Não puxe o fiel importar comandar direita fora do bastão. Sqoop possui diversas ferramentas úteis, juntamente com importar e exportar, incluindo o list-bases de dados comando, que é usado na seguinte lista. Usando esse comando, você pode confirmar se você tem conectividade e visibilidade para o banco de dados MySQL.



$ Sqoop list-bases de dados --connect jdbc: mysql: // localhost / - username senha -PEnter root: 13/08/15 17:21:00 INFO manager.MySQLManager: Preparando para usar um streaming de resultset.information_schemamysqlperformance_schema MySQLserviceorderdb

o serviceorderdb é mostrado para estar disponível, então agora você pode listar as tabelas dentro serviceorderdb usando o Sqoop list-tabelas comando. Observe que agora você está adicionando o banco de dados que você quer Sqoop acessar no jdbc: URL mysql:

$ Sqoop lista-tables - ligue jdbc: mysql: // localhost /serviceorderdb--Nome de Usuário Senha -PEnter root: 13/08/15 17:22:01 INFO manager.MySQLManager: Preparando para usar um MySQL de streaming resultset.customercontactinfoproductinfoserviceorders

Sqoop agora tem conectividade e pode acessar as três tabelas a partir da figura. Isso significa que você pode executar o seu primeiro Sqoop importar comando e direcionar o serviceorders mesa com a consciência limpa. Sqoop importar comandos têm o seguinte formato:

importação Sqoop (argumentos genéricos) (argumentos de importação)

Com os argumentos genéricos, você apontar para o banco de dados MySQL e fornecer as informações de login necessário, assim como você fez com o anterior list-tabelas ferramenta. Nos argumentos de importação, você (o usuário) têm a capacidade de especificar o que você deseja importar e como deseja que a importação seja realizada.

Na seguinte lista, você especificar a tabela de serviceorders e solicitar que uma tarefa mapa ser utilizado para a importação usando o -m 1 CLA. (Por padrão, Sqoop usaria quatro tarefas mapa, mas isso seria um exagero para esta pequena mesa e nossa máquina virtual.)

Você também ter especificado o -nome da classe para o código gerado e o especificado -bindir onde o código compilado e .jarra arquivo deve ser localizado. (Sem estes argumentos, Sqoop iria colocar o arquivo de origem Java gerado em seu diretório de trabalho atual eo compilado .classe arquivo e .arquivo jar dentro / Tmp / sqoop-/compilar.)

Video: How to Import Selected columns in Hadoop using Sqoop

O nome da classe simplesmente deriva o nome da tabela, a menos que você especifique um nome com a ajuda do -nome da classe argumento de linha de comando (CLA). o -destino-dir é o local no HDFS onde você quer a tabela importada para ser colocado.

$ Sqoop importação - ligue jdbc: mysql: // localhost / serviceorderdb - -P nome de usuário root - serviceorders tabela -m 1 - serviceorders classe-nome - alvo-dir / usr / BiAdmin / serviceorders-import - bindir .Enter senha: ... 13/08/25 14:43:56 INFO mapreduce.ImportJobBase: Transferido 356 bytes em 21.0736 segundos (16.8932 bytes / seg) 13/08/25 14:43:56 INFO mapreduce.ImportJobBase: Recuperado 4 fichas.

Publicações relacionadas