O documento apresenta Marco Antonio Lopes, cientista de dados no Itaú e professor de Big Data e IoT na FIA. Ele discute como conectar o MongoDB e o Hive para unir as vantagens de velocidade do MongoDB com a capacidade de processamento do Hive, permitindo a criação de arquiteturas Big Data responsivas e análises estatísticas em grandes volumes de dados.
1. pen4education
Trilha – Big Data
Marco Antonio Lopes
Cientista de Dados no Itaú
Professor de Big Data e IoT na FIA
2. pen4education
Marco Antonio Lopes
• Formação:
• Mestrando em Estatística - FEA-USP
• Bacharel em Ciências da Computação - UNESP Bauru
• Pós Graduação em Data Mining - FIA
• MBA em Big Data Analytics - FIA
• Experiência:
• Cientista de Dados - Itaú Unibanco S.A.
• Professor nos cursos de Big Data e IoT da FIA
• Arquiteto de Soluções Big Data - Itaú Unibanco S.A. (2014 - 2016)
• Analista de Sistemas - CESP (2010 - 2014)
4. pen4education
MongoDB
• NoSQL
• Orientado a documentos
• Consistente
• Todo mundo lê a mesma coisa
• Tolerante a partição
• Em caso de falha, continua operante
• Baixa latência
6. pen4education
Hive
• Mapeia arquivos no HDFS
• xml, json, csv, posicional, …
• SQL rodando no Hadoop
• Data Warehouse
• Todas as vantagens do Hadoop
• Porém
• Alta latência
• Não é transacional
7. pen4education
Por que conectá-los?
• Unir o melhor de dois mundos
• Velocidade do MongoDB
• Capacidade de processamento do Hive
• Criação de arquiteturas Big Data
• Responsividade
• Análises estatísticas em grandes volumes de dados
9. pen4education
Como conectá-los?
• Tabela Hive apontando para o Mongodb
CREATE EXTERNAL TABLE tabela_hive
(
Campo1 STRING,
Campo2 STRING
)
STORED BY 'com.mongodb.hadoop.hive.MongoStorageHandler'
WITH SERDEPROPERTIES('mongo.columns.mapping'=
'{"Campo1":"Campo1", "Campo2":"Campo2"}'
)
TBLPROPERTIES(
'mongo.uri'='mongodb://localhost:27017/database.collection'
);
10. pen4education
Como conectá-los?
• Exportar dados do mongodb como json
mongoexport --db database --collection collection --out contacts.json
• Carregar o json como tabela no Hive
CREATE TABLE tabela_hive (
id int,
campo1 string,
scores array<struct<chave:string, valor:double>>)
ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe'
STORED AS TEXTFILE;
11. pen4education
Como conectá-los?
• Ou fazer uso de UDFs
CREATE TABLE tabela_hive (
id int,
json string )
STORED AS TEXTFILE
LOCATION ‘caminho/para/o/json/;
SELECT
get_json_object(json, "$.campo1") as campo1
FROM tabela_hive;
12. pen4education
Como conectá-los?
• Caminho de volta
CREATE TABLE salva_arquivo AS select * from tabela
ROW FORMAT
FIELDS TERMINATED BY ‘,’ LINES TERMINATED BY ‘n’
LOCATION ‘caminho/para/csv’;
mongoimport --db database --collection col --type csv --file tabela_hive.csv