Importar dados para hbase com sqoop

Sqoop pode ser usado para transformar um esquema de banco de dados relacional em um esquema HBase. Claro, o principal objetivo aqui é demonstrar como Sqoop pode importar dados de um RDBMS ou armazém de dados diretamente em HBase, mas é sempre melhor para ver como a ferramenta é usada no contexto versus como ele é usado em abstrato.

Video: Sqoop Import to Hdfs, Hive and Hbase

A figura mostra como a ordem de serviço de banco de dados pode parecer após ser transformado em um esquema HBase.

Video: Sqoop to Hbase Import

Para este exemplo de importação particular, você deseja importar o customercontactinfo tabela diretamente em uma tabela HBase em preparação para a construção do esquema de banco de dados HBase Ordem de Serviço. Para completar o esquema HBase, você teria que executar os mesmos passos para importar o informação do produto mesa, e então o serviceorders tabela pode ser construído com uma aplicação Java MapReduce.

Sqoop não permitem agora que você importe, ao mesmo tempo, uma tabela relacional diretamente em uma tabela HBase ter várias famílias de colunas. Para contornar esta limitação, você cria a tabela HBase primeiro e depois executar três operações de importação Sqoop para terminar a tarefa. A listagem mostra a tarefa de criar a tabela.

hbase (principal): 017: 0gt; criar `customercontactinfo`, `CustomerName`, HBase (principal): 018: 0 * `ContactInfo`, `row ProductNums`0 (s) em 1.0680 segundos


No seguinte perfil, para cada comando de importação Sqoop, note que o alvo família coluna HBase especificado pelo -column familiar O CLA e as colunas correspondentes MySQL especificados pela -columns CLA estão em negrito. o customernum chave primária também se torna a chave de linha HBase, conforme especificado pelo -hbase-row-chave CLA.

$ Importação Sqoop - ligue jdbc: mysql: // localhost / serviceorderdb - nome de usuário raiz -P - customercontactinfo mesa  --colunas "customernum, CustomerName" --customercontactinfo hbase-table  --CustomerName coluna familiar --customernum hbase-row-chave -m senha 1Digite: ... 13/08/17 16:53:01 INFO mapreduce.ImportJobBase: Retirado 5 registros $ Sqoop importação - ligue jdbc:. mysql: // localhost / serviceorderdb-- nome de usuário raiz -P - customercontactinfo mesa  --colunas "customernum, contactinfo" --customercontactinfo hbase-table  --coluna da família ContactInfo --customernum hbase-row-chave -m senha 1Digite: ... 13/08/17 17:00:59 INFO mapreduce.ImportJobBase: Retirado 5 registros $ Sqoop importação - ligue jdbc:. mysql: // localhost / serviceorderdb-- nome de usuário raiz -P - customercontactinfo-- mesacolunas "customernum, productnums" --customercontactinfo-- hbase-tableProductNums coluna-família --hbase-linha de chave customernum -m 1Digite senha: ... 13/08/17 17:05:54 INFO mapreduce.ImportJobBase: Retirado 5 registros.

Se você estava a realizar uma varredura HBase de sua nova tabela, você veria que a importação ea tradução de uma tabela de banco de dados relacional em MySQL diretamente em HBase foi um sucesso.

o customercontactinfo tabela neste exemplo é bastante pequeno, mas imagine o poder que você tem agora, usando Sqoop e HBase, mover-se rapidamente tabelas relacionais que podem ser superiores a capacidade do seu RDBMS ou armazém de dados em HBase, onde a capacidade é virtualmente ilimitado e escalabilidade é automático.

hbase (principal): 033: 0gt; Scan `customercontactinfo`ROWCOLUMN + CELL10000column = ContactInfo: contactinfo, timestamp = 1376773256317, valor = 1 Hadoop Lane, NY, 11111, [email protected]=CustomerName: CustomerName, timestamp = 1376772776684, valor = John Timothy Smith10000column = ProductNums: productnums, timestamp = 1376773551221, valor = B50010001column = contactInfo: contactinfo, timestamp = 1376773256317, valor = 2 HBase Ave, CA, 2222210001column = CustomerName: CustomerName, timestamp = 1376772776684, valor = Bill Jones10001column = productNums: productnums, timestamp = 1376773551221, valor = A100, A200, A300, B400, B500, C500, C600, D70020000column = contactInfo: contactinfo, timestamp = 1376773256317, valor = 1 Especialista HBase Ave, CA, 2222220000column = CustomerName: CustomerName, timestamp = 1376772776684, valor = Jane Ann Doe20000column = productNums: productnums, timestamp = 1376773551221, valor = A100, A200, A30020001column = contactInfo: contactinfo, timestamp = 1376773256317, valor = 1 PigLatin Ave, CO, 3333320001column = CustomerName: CustomerName, timestamp = 13767727 76.684, valor = Joe Developer20001column = ProductNums: productnums, timestamp = 1376773551221, valor = D70030000column = ContactInfo: contactinfo, timestamp = 1376773256317, valor = 1 Estatísticas Lane, MA, 3333330000column = CustomerName: CustomerName, timestamp = 1376772776684, valor = Dados Scientist30000column = productNums: productnums, timestamp = 1376773551221, valor = linha (s) C5005 em 0.1120 segundo

A importação de dados relacionais existentes através Sqoop em tabelas colmeia e HBase pode potencialmente permitir uma ampla gama de novas e excitantes fluxos de trabalho de análise de dados. Se este recurso é de interesse para você, confira a documentação do Apache Sqoop para argumentos de linha de comando adicionais colmeia e HBase e características.


Publicações relacionadas