Importando dados para HBase com Sqoop

Sqoop pode ser usado para transformar um esquema de base de dados relacional para 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 no resumo.

A figura mostra como a ordem de serviço de banco de dados pode parecer depois de ter sido transformado em um esquema HBase.

image0.jpg

Para este exemplo de importação em 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 a informação do produto mesa, e, em seguida, 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. O perfil mostra a tarefa de criar a tabela.

hbase (principal): 017: 0> criar "customercontactinfo ',' CustomerName ', hbase (principal): 018: 0 *' ContactInfo ',' row ProductNums'0 (s) em 1.0680 segundos

Na lista a seguir, para cada comando de importação Sqoop, note que o alvo família de colunas HBase especificado pelo --coluna da família O CLA e as colunas correspondentes MySQL especificados pela -colunas 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.

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

Se você estava a realizar uma varredura HBase da 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ática.

hbase (principal): 033: 0> Varredura 'customercontactinfo'ROWCOLUMN + CELL10000column = ContactInfo: contactinfo, timestamp = 1376773256317, valor = 1 Hadoop Lane, NY, 11111, [email protected]=CustomerName: CustomerName, timestamp = 1376772776684 , value = John Timothy Smith10000column = productNums: productnums, timestamp = 1376773551221, value = B50010001column = contactInfo: contactinfo, timestamp = 1376773256317, valor = 2 HBase Ave, CA, 2222210001column = CustomerName: CustomerName, timestamp = 1376772776684, value = Bill Jones10001column = productNums: productnums, timestamp = 1376773551221, value = A100, A200, A300, B400, B500, C500, C600, D70020000column = contactInfo: contactinfo, timestamp = 1376773256317, valor = 1 Especialista HBase Ave, CA, 2222220000column = CustomerName: CustomerName, timestamp = 1376772776684, value = Jane Ann Doe20000column = productNums: productnums, timestamp = 1376773551221, value = A100, A200, A30020001column = contactInfo: contactinfo, timestamp = 1376773256317, valor = 1 PigLatin Ave, CO, 3333320001column = CustomerName: CustomerName, timestamp = 1376772776684 , 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, value = linha (s) C5005 em 0.1120 segundos

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 colmeia e HBase e características.

menu