SlideShare uma empresa Scribd logo
1 de 29
Big Data – Visão Geral e Apache Solr
Juliano Marcos Martins – juliano.jmm@gmail.com
http://jmmwrite.wordpress.com
2
Disclaimer
Esta apresentação NÃO FOI cuidadosamente revisada e por
isso não esta livre de erros.
Toda critica será muito bem aceita ;)
As opiniões aqui apresentadas são de minha
responsabilidade e não tem relação com as
empresas/Instituições nas quais trabalhei/trabalho ou tive
qualquer tipo de relacionamento.
3
A quem se destina
Esta apresentação é destinada a estudantes e profissionais
de TI que estão iniciando o contato com Big Data.
As explicações e exemplos podem ser superficiais para quem
já conhece um pouco sobre o TEMA, inclusive, utilizando
termos que visam a didática.
4
Big Data
“Data is a new Class of economic asset, like
currency or gold.” Davos, Suiça, 2012 – World
Economic Summit
5
Introdução
Tecnologia + Metodologia para → Capturar, Armazenar e Analisar
dados
5 Vs
Volume
Velocidade
Variedade
Veracidade
Valor
Finalidade: dar subsidios para tomadas de decisão
Muitos dados, Pouca informação
6
Exemplo
Análise de sentimento com dados da Web e sociais
Departamentos de marketing usam feeds do Twitter para
realizar análise de sentimento e determinar o que os usuários
estão falando sobre a empresa e seus produtos ou serviços,
especialmente após o lançamento de um novo produto ou
release.
O sentimento do cliente deve ser integrado aos dados de
perfil do cliente para derivar resultados significativos. O
feedback do cliente pode variar de acordo com seus
aspectos demográficos.
Objetivo: direcionar a empresa em lançamentos de
promoções.
7
Exemplo
Fraudes em plano de saúde, abertura de contas
O case Abertura de conta
8
ONDE,OQUÊ,QUANDO?
Dados Estruturados
Dados Não
Estruturados
Armaz.Distribuído
Machine Learning, Data Mining
Classificação: SVM,
Naive-Bayes, logistic regression,
K-nearest
Regressão: Linear (lasso,
ridge), polinomial, etc
Clustering: K-means,
Spectral clustering, etc
Redução Dimensional:
Isomap, kernel aprox, PCA,
singular value decomposition
Árvores de Decisão
Random Forests
Análise de
Associação: Apriori, FP-
growth
Modelo Escondido de
Markov
Não supervisionados Supervisionados
ContínuoCategórico
ETL¹/MR²
DADOS ANÁLISE
1. ETL: Extract, Transform and Load
2. MR: Map Reduce
Data WareHouse,
Sistemas Legados, Main
Frame
Dispositivos, SMS,
Redes Sociais, Áudio,
Vídeo, Geo, Logs
DATA VISUALIZATION - SEARCH
Copiado livremente da Apresentação de José Damico – FEMA – Set, 2015
9
Respostas rápidas
Um pouquinho sobre performance
Como suportar uma aplicação e dar feedbacks em “tempo
real” para os tomadores de decisão, tendo em vista o
volume e a velocidades com os quais os dados mudam?
Um banco de dados suportaria a aplicação?
Conhecendo um pouco sobre bases OLTP e DW, exemplo
de sistema de billing.
10
Tecnologias
Datasources: Facebook, Twitter, Blogs, Aplicações, bancos,
Devices (IoT), etc...
Banco de dados NoSQL (Not only Structured Query Language) –
MongoDB, Cassandra, Hbase
Processamento distribuido: Apache Hadoop/HDFS, Hive, Impala,
Pig
Análise: R, Pentaho, Python
Recursos na nuvem (sob demanda elástico)
Watson Explorer e Apache Solr
11
O Profissional
O profissional big data (Data Scientist) deve ser multidisciplinar
(matemática, estatística, modelagem, reconhecimento de padrões,
IA, DW, ETL, High Performance Computation, etc).
12
13
Introdução
http://lucene.apache.org/solr/
O que é o Apache Solr?
“Solr is highly reliable, scalable and fault tolerant, providing
distributed indexing, replication and load-balanced querying,
automated failover and recovery, centralized configuration and
more. Solr powers the search and navigation features of many
of the world's largest internet sites.”
Por que Apache Solr?
Livre
Leve
Boa documentação
14
Conceitos
Collection
Documents
Shards: A subset of data that is assigned to a server. Collections
can have multiple Shards.
Node
Replica: Mirror!
15
Conceitos
Craw – Push – Post – Schedule
Formas de se efetuar Push
Index
Transform
Search
16
Field x Facet
We can simple define that the field represent the data itself, and
the facet its such a GROUP, combined usually by volume. As
described at Solr documentation “faceting is the arrangement of
search results into categories based on indexed terms”. Every
Facet have index to be searchable.
Its possible to configure FACETS with many options like sort,
searchable, etc. Each product have its possibilities.
Think that when you perform a query, you will use FACETs in
the “Where”, something like this:
Select FIELDS from COLLECTION where FACET
MY_FACET = ‘dummy’;
17
Facet Example
Price
18
Passo a Passo
Baixar o solr (http://lucene.apache.org/solr/ )
Descompactar ( tar -xvzf solr-6.0.0.tgz ) (at Linux)
19
Passo a Passo
Rodar: bin/solr start -e cloud -noprompt
(pode demorar alguns minutos para iniciar – aguarde finalizar)
20
Passo a Passo
Abra no navegador o Admin Console: http://localhost:8983/solr
21
Passo a Passo
Postando dados:
bin/post -c gettingstarted docs/
(docs - pdf, etc)
bin/post -c gettingstarted ../example/exampledocs/*.xml
(produtos, etc)
22
Passo a Passo
Efetuando buscas (observe que o nome da Collection esta na URL)
http://localhost:8983/solr/gettingstarted/browse
23
Projeto Java
Criaremos um projeto Maven simplesmente pela facilidade de
baixar as dependencias. Caso não conheça Maven, basta criar um
projeto Java comum, e baixar as dependencias abaixo, colocando
no build path do projeto (as versões podem mudar):
Utilizaremos a biblioteca SolrJ!
http://wiki.apache.org/solr/Solrj1.3
24
Projeto Java
Criar projeto Maven, adicionar as dependencias no pom.xml
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<artifactId>solr-solrj</artifactId>
<groupId>org.apache.solr</groupId>
<version>4.1.0</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>1.7.2</version>
</dependency>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.1.1</version>
</dependency>
</dependencies>
25
Projeto Java – Classe Exemplo (consulta)
package com.ibm.solr;
import java.net.MalformedURLException;
import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.impl.HttpSolrServer;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.common.SolrDocument;
public class SolrJExample {
public static void main(String[] args) throws MalformedURLException, SolrServerException {
// Busca por termo na collection
HttpSolrServer server = new HttpSolrServer("http://localhost:8983/solr/gettingstarted");
SolrQuery query = new SolrQuery();
//query.setQuery( ""Buscar Frase Completa"");
query.setQuery( "id:id1");
//query.setQuery( "*.*"); //buscar tudo
query.setFields("name","price"); // limitando campos na resposta
query.setStart(0);
QueryResponse queryResponse = server.query(query);
for(SolrDocument document: queryResponse.getResults()){
System.out.println(document);
}
}
}
26
Projeto Java – Classe Push
package com.ibm.solr;
import java.io.IOException;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.impl.HttpSolrServer;
import org.apache.solr.common.SolrInputDocument;
public class SolrTest2 {
public static void main(String[] args) throws SolrServerException, IOException {
HttpSolrServer server = new HttpSolrServer("http://localhost:8983/solr/gettingstarted");
SolrInputDocument doc1 = new SolrInputDocument();
doc1.addField( "id", "id1" );
doc1.addField( "name", "Celular do Juliano");
doc1.addField( "manu", "Fabrica do Celular do Juliano");
doc1.addField( "price", 10 );
doc1.addField( "popularity", 10 );
server.add(doc1);
}
}
27
Projeto Java
Rodando a classe de consulta, iremos buscar os documentos que
contenham os critérios definidos.
A classe de Post, “insere” os dados no Solr.
Recomendo efetuar posts com seus dados e após isso, brincar
com as buscas mudando critérios, etc.
Os proximos passos em seus estudos podem ser:
Criar um campo facet e efetuar buscas nele
Criar uma collection manualmente, e pesquisar como fazer push
a partir e dados de um banco de dados
Criar uma aplicação WEB que exibe os dados do solr e permite
efetuar buscas.
28
Limpando o Solr
bin/solr stop -all ; rm -Rf example/cloud/
29
All text and image content in this document is licensed under the Creative Commons Attribution-Share Alike 3.0 License
(unless otherwise specified). Adobe, Google, Apple, Apache, and other are registered trademarks. Their respective logos and
icons are subject to international copyright laws.
Thank you …
… for your dedication and patience!

Mais conteúdo relacionado

Mais procurados

Os 10 maus habitos dos desenvolvedores jsf (JustJava e CCT)
Os 10 maus habitos dos desenvolvedores jsf (JustJava e CCT)Os 10 maus habitos dos desenvolvedores jsf (JustJava e CCT)
Os 10 maus habitos dos desenvolvedores jsf (JustJava e CCT)Rafael Ponte
 
Técnicas de Refactorización (EN ESPANOL)
Técnicas de Refactorización (EN ESPANOL)Técnicas de Refactorización (EN ESPANOL)
Técnicas de Refactorización (EN ESPANOL)Rodrigo Branas
 
Migrations for Java (Javou #4 - JavaCE)
Migrations for Java (Javou #4 - JavaCE)Migrations for Java (Javou #4 - JavaCE)
Migrations for Java (Javou #4 - JavaCE)Rafael Ponte
 
Criando serviços com AngularJS
Criando serviços com AngularJSCriando serviços com AngularJS
Criando serviços com AngularJSRodrigo Branas
 
Construindo Diretivas com AngularJS
Construindo Diretivas com AngularJSConstruindo Diretivas com AngularJS
Construindo Diretivas com AngularJSRodrigo Branas
 
Django Módulo Básico Parte I - Desenvolvimento de uma aplicação Web
Django Módulo Básico Parte I - Desenvolvimento de uma aplicação WebDjango Módulo Básico Parte I - Desenvolvimento de uma aplicação Web
Django Módulo Básico Parte I - Desenvolvimento de uma aplicação Webantonio sérgio nogueira
 
Criando websites a jato com Django
Criando websites a jato com DjangoCriando websites a jato com Django
Criando websites a jato com DjangoMarcos Petry
 
Mini curso introdutório ao Django
Mini curso introdutório ao DjangoMini curso introdutório ao Django
Mini curso introdutório ao DjangoVinicius Mendes
 
Técnicas de Refactoring
Técnicas de RefactoringTécnicas de Refactoring
Técnicas de RefactoringRodrigo Branas
 
Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...
Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...
Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...Tchelinux
 
InterCon 2017 - Engenharia de segurança web: Proteja todas as camadas de seu ...
InterCon 2017 - Engenharia de segurança web: Proteja todas as camadas de seu ...InterCon 2017 - Engenharia de segurança web: Proteja todas as camadas de seu ...
InterCon 2017 - Engenharia de segurança web: Proteja todas as camadas de seu ...iMasters
 

Mais procurados (19)

Spa com angular js flisol 2015 - aquidauana ms
Spa com angular js   flisol 2015 - aquidauana msSpa com angular js   flisol 2015 - aquidauana ms
Spa com angular js flisol 2015 - aquidauana ms
 
Os 10 maus habitos dos desenvolvedores jsf (JustJava e CCT)
Os 10 maus habitos dos desenvolvedores jsf (JustJava e CCT)Os 10 maus habitos dos desenvolvedores jsf (JustJava e CCT)
Os 10 maus habitos dos desenvolvedores jsf (JustJava e CCT)
 
Aplicacoes Web Com AJAX
Aplicacoes Web Com AJAXAplicacoes Web Com AJAX
Aplicacoes Web Com AJAX
 
Técnicas de Refactorización (EN ESPANOL)
Técnicas de Refactorización (EN ESPANOL)Técnicas de Refactorización (EN ESPANOL)
Técnicas de Refactorización (EN ESPANOL)
 
Migrations for Java (Javou #4 - JavaCE)
Migrations for Java (Javou #4 - JavaCE)Migrations for Java (Javou #4 - JavaCE)
Migrations for Java (Javou #4 - JavaCE)
 
Clean Code
Clean CodeClean Code
Clean Code
 
Criando serviços com AngularJS
Criando serviços com AngularJSCriando serviços com AngularJS
Criando serviços com AngularJS
 
Relatório
RelatórioRelatório
Relatório
 
Testando API Rest com Insomnia Core
Testando API Rest com Insomnia CoreTestando API Rest com Insomnia Core
Testando API Rest com Insomnia Core
 
Construindo Diretivas com AngularJS
Construindo Diretivas com AngularJSConstruindo Diretivas com AngularJS
Construindo Diretivas com AngularJS
 
Python 07
Python 07Python 07
Python 07
 
Owasp web app_flaws
Owasp web app_flawsOwasp web app_flaws
Owasp web app_flaws
 
Django Módulo Básico Parte I - Desenvolvimento de uma aplicação Web
Django Módulo Básico Parte I - Desenvolvimento de uma aplicação WebDjango Módulo Básico Parte I - Desenvolvimento de uma aplicação Web
Django Módulo Básico Parte I - Desenvolvimento de uma aplicação Web
 
Criando websites a jato com Django
Criando websites a jato com DjangoCriando websites a jato com Django
Criando websites a jato com Django
 
Mini curso introdutório ao Django
Mini curso introdutório ao DjangoMini curso introdutório ao Django
Mini curso introdutório ao Django
 
Técnicas de Refactoring
Técnicas de RefactoringTécnicas de Refactoring
Técnicas de Refactoring
 
Minicurso Yii2
Minicurso Yii2Minicurso Yii2
Minicurso Yii2
 
Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...
Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...
Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...
 
InterCon 2017 - Engenharia de segurança web: Proteja todas as camadas de seu ...
InterCon 2017 - Engenharia de segurança web: Proteja todas as camadas de seu ...InterCon 2017 - Engenharia de segurança web: Proteja todas as camadas de seu ...
InterCon 2017 - Engenharia de segurança web: Proteja todas as camadas de seu ...
 

Destaque

Software livre em minha carreira
Software livre em minha carreiraSoftware livre em minha carreira
Software livre em minha carreiraJuliano Martins
 
Desmistificando Tecnologias
Desmistificando TecnologiasDesmistificando Tecnologias
Desmistificando TecnologiasJuliano Martins
 
Desenvolvendo uma aplicação híbrida para Android e IOs utilizando Ionic, aces...
Desenvolvendo uma aplicação híbrida para Android e IOs utilizando Ionic, aces...Desenvolvendo uma aplicação híbrida para Android e IOs utilizando Ionic, aces...
Desenvolvendo uma aplicação híbrida para Android e IOs utilizando Ionic, aces...Juliano Martins
 
Passo a Passo para criar uma aplicação Móvel Híbrida
Passo a Passo para criar uma aplicação Móvel HíbridaPasso a Passo para criar uma aplicação Móvel Híbrida
Passo a Passo para criar uma aplicação Móvel HíbridaJuliano Martins
 
Desenvolvimento Mobile Híbrido
Desenvolvimento Mobile HíbridoDesenvolvimento Mobile Híbrido
Desenvolvimento Mobile HíbridoJuliano Martins
 
Apresentação - Solr, o cara!
Apresentação - Solr, o cara!Apresentação - Solr, o cara!
Apresentação - Solr, o cara!flavioesio
 
Apache solr: como, quando e onde
Apache solr: como, quando e ondeApache solr: como, quando e onde
Apache solr: como, quando e ondePedro Rocha
 
Buscas Poderosas Com Solr
Buscas Poderosas Com SolrBuscas Poderosas Com Solr
Buscas Poderosas Com Solralmeidaricardo
 
IBM - The 7 Keys to Success - MoMoDar
IBM - The 7 Keys to Success - MoMoDarIBM - The 7 Keys to Success - MoMoDar
IBM - The 7 Keys to Success - MoMoDarHamisi Kibonde
 
Mobile Is Eating the World (2015)
Mobile Is Eating the World (2015)Mobile Is Eating the World (2015)
Mobile Is Eating the World (2015)a16z
 

Destaque (10)

Software livre em minha carreira
Software livre em minha carreiraSoftware livre em minha carreira
Software livre em minha carreira
 
Desmistificando Tecnologias
Desmistificando TecnologiasDesmistificando Tecnologias
Desmistificando Tecnologias
 
Desenvolvendo uma aplicação híbrida para Android e IOs utilizando Ionic, aces...
Desenvolvendo uma aplicação híbrida para Android e IOs utilizando Ionic, aces...Desenvolvendo uma aplicação híbrida para Android e IOs utilizando Ionic, aces...
Desenvolvendo uma aplicação híbrida para Android e IOs utilizando Ionic, aces...
 
Passo a Passo para criar uma aplicação Móvel Híbrida
Passo a Passo para criar uma aplicação Móvel HíbridaPasso a Passo para criar uma aplicação Móvel Híbrida
Passo a Passo para criar uma aplicação Móvel Híbrida
 
Desenvolvimento Mobile Híbrido
Desenvolvimento Mobile HíbridoDesenvolvimento Mobile Híbrido
Desenvolvimento Mobile Híbrido
 
Apresentação - Solr, o cara!
Apresentação - Solr, o cara!Apresentação - Solr, o cara!
Apresentação - Solr, o cara!
 
Apache solr: como, quando e onde
Apache solr: como, quando e ondeApache solr: como, quando e onde
Apache solr: como, quando e onde
 
Buscas Poderosas Com Solr
Buscas Poderosas Com SolrBuscas Poderosas Com Solr
Buscas Poderosas Com Solr
 
IBM - The 7 Keys to Success - MoMoDar
IBM - The 7 Keys to Success - MoMoDarIBM - The 7 Keys to Success - MoMoDar
IBM - The 7 Keys to Success - MoMoDar
 
Mobile Is Eating the World (2015)
Mobile Is Eating the World (2015)Mobile Is Eating the World (2015)
Mobile Is Eating the World (2015)
 

Semelhante a Introdução a Big Data e Apache Solr

10 Dicas para Implementacao do OracleAS
10 Dicas para Implementacao do OracleAS10 Dicas para Implementacao do OracleAS
10 Dicas para Implementacao do OracleASacsvianabr
 
[TDC2016] Apache SparkMLlib: Machine Learning na Prática
[TDC2016] Apache SparkMLlib:  Machine Learning na Prática[TDC2016] Apache SparkMLlib:  Machine Learning na Prática
[TDC2016] Apache SparkMLlib: Machine Learning na PráticaEiti Kimura
 
TDC2016SP - SparkMLlib Machine Learning na Prática
TDC2016SP -  SparkMLlib Machine Learning na PráticaTDC2016SP -  SparkMLlib Machine Learning na Prática
TDC2016SP - SparkMLlib Machine Learning na Práticatdc-globalcode
 
Monitorando aplicações distribuidas nativas em cloud com Prometheus
Monitorando aplicações distribuidas nativas em cloud com PrometheusMonitorando aplicações distribuidas nativas em cloud com Prometheus
Monitorando aplicações distribuidas nativas em cloud com PrometheusEdilson Azevedo
 
TDC2016POA | Trilha Cloud Computing - Monitorando aplicações distribuidas em ...
TDC2016POA | Trilha Cloud Computing - Monitorando aplicações distribuidas em ...TDC2016POA | Trilha Cloud Computing - Monitorando aplicações distribuidas em ...
TDC2016POA | Trilha Cloud Computing - Monitorando aplicações distribuidas em ...tdc-globalcode
 
Maratona JBoss 2010 - Drools Expert : Programação Orientada a Regras
Maratona JBoss 2010 - Drools Expert : Programação Orientada a RegrasMaratona JBoss 2010 - Drools Expert : Programação Orientada a Regras
Maratona JBoss 2010 - Drools Expert : Programação Orientada a RegrasDextra
 
Aplicações Móveis com J2ME
Aplicações Móveis com J2MEAplicações Móveis com J2ME
Aplicações Móveis com J2MEelliando dias
 
Workshop Elasticsearch - Android Dev Conference 2016
Workshop Elasticsearch - Android Dev Conference 2016Workshop Elasticsearch - Android Dev Conference 2016
Workshop Elasticsearch - Android Dev Conference 2016Thiago Barradas
 
Apache NiFi com postgresql
Apache NiFi com postgresqlApache NiFi com postgresql
Apache NiFi com postgresqlGerdan Santos
 
Apache NiFi com PostgreSQL - PGConf.Brasil 2018
Apache NiFi com PostgreSQL - PGConf.Brasil 2018Apache NiFi com PostgreSQL - PGConf.Brasil 2018
Apache NiFi com PostgreSQL - PGConf.Brasil 2018Davy Alvarenga Machado
 
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)Desenvolvimento de Aplicações para o Google App Engine (CPBR5)
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)Carlos Duarte do Nascimento
 
Desenvolvimento de aplicações para o Google App Engine
Desenvolvimento de aplicações para o Google App EngineDesenvolvimento de aplicações para o Google App Engine
Desenvolvimento de aplicações para o Google App EngineCampus Party Brasil
 
PCF03 - 2001 Comentada
PCF03 - 2001 ComentadaPCF03 - 2001 Comentada
PCF03 - 2001 ComentadaWalter Cunha
 

Semelhante a Introdução a Big Data e Apache Solr (20)

Pdm -final
Pdm  -finalPdm  -final
Pdm -final
 
Planejamento rede
Planejamento rede Planejamento rede
Planejamento rede
 
10 Dicas para Implementacao do OracleAS
10 Dicas para Implementacao do OracleAS10 Dicas para Implementacao do OracleAS
10 Dicas para Implementacao do OracleAS
 
[TDC2016] Apache SparkMLlib: Machine Learning na Prática
[TDC2016] Apache SparkMLlib:  Machine Learning na Prática[TDC2016] Apache SparkMLlib:  Machine Learning na Prática
[TDC2016] Apache SparkMLlib: Machine Learning na Prática
 
TDC2016SP - SparkMLlib Machine Learning na Prática
TDC2016SP -  SparkMLlib Machine Learning na PráticaTDC2016SP -  SparkMLlib Machine Learning na Prática
TDC2016SP - SparkMLlib Machine Learning na Prática
 
Monitorando aplicações distribuidas nativas em cloud com Prometheus
Monitorando aplicações distribuidas nativas em cloud com PrometheusMonitorando aplicações distribuidas nativas em cloud com Prometheus
Monitorando aplicações distribuidas nativas em cloud com Prometheus
 
TDC2016POA | Trilha Cloud Computing - Monitorando aplicações distribuidas em ...
TDC2016POA | Trilha Cloud Computing - Monitorando aplicações distribuidas em ...TDC2016POA | Trilha Cloud Computing - Monitorando aplicações distribuidas em ...
TDC2016POA | Trilha Cloud Computing - Monitorando aplicações distribuidas em ...
 
Maratona JBoss 2010 - Drools Expert : Programação Orientada a Regras
Maratona JBoss 2010 - Drools Expert : Programação Orientada a RegrasMaratona JBoss 2010 - Drools Expert : Programação Orientada a Regras
Maratona JBoss 2010 - Drools Expert : Programação Orientada a Regras
 
Java e orientação a objetos
Java e orientação a objetosJava e orientação a objetos
Java e orientação a objetos
 
Apostila oracle
Apostila oracleApostila oracle
Apostila oracle
 
Aplicações Móveis com J2ME
Aplicações Móveis com J2MEAplicações Móveis com J2ME
Aplicações Móveis com J2ME
 
Workshop Elasticsearch - Android Dev Conference 2016
Workshop Elasticsearch - Android Dev Conference 2016Workshop Elasticsearch - Android Dev Conference 2016
Workshop Elasticsearch - Android Dev Conference 2016
 
Ingestão de Dados
Ingestão de DadosIngestão de Dados
Ingestão de Dados
 
Bigadata casese opotunidades
Bigadata casese opotunidadesBigadata casese opotunidades
Bigadata casese opotunidades
 
Apache NiFi com postgresql
Apache NiFi com postgresqlApache NiFi com postgresql
Apache NiFi com postgresql
 
Apache NiFi com PostgreSQL - PGConf.Brasil 2018
Apache NiFi com PostgreSQL - PGConf.Brasil 2018Apache NiFi com PostgreSQL - PGConf.Brasil 2018
Apache NiFi com PostgreSQL - PGConf.Brasil 2018
 
Dawarehouse e OLAP
Dawarehouse e OLAPDawarehouse e OLAP
Dawarehouse e OLAP
 
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)Desenvolvimento de Aplicações para o Google App Engine (CPBR5)
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)
 
Desenvolvimento de aplicações para o Google App Engine
Desenvolvimento de aplicações para o Google App EngineDesenvolvimento de aplicações para o Google App Engine
Desenvolvimento de aplicações para o Google App Engine
 
PCF03 - 2001 Comentada
PCF03 - 2001 ComentadaPCF03 - 2001 Comentada
PCF03 - 2001 Comentada
 

Introdução a Big Data e Apache Solr

  • 1. Big Data – Visão Geral e Apache Solr Juliano Marcos Martins – juliano.jmm@gmail.com http://jmmwrite.wordpress.com
  • 2. 2 Disclaimer Esta apresentação NÃO FOI cuidadosamente revisada e por isso não esta livre de erros. Toda critica será muito bem aceita ;) As opiniões aqui apresentadas são de minha responsabilidade e não tem relação com as empresas/Instituições nas quais trabalhei/trabalho ou tive qualquer tipo de relacionamento.
  • 3. 3 A quem se destina Esta apresentação é destinada a estudantes e profissionais de TI que estão iniciando o contato com Big Data. As explicações e exemplos podem ser superficiais para quem já conhece um pouco sobre o TEMA, inclusive, utilizando termos que visam a didática.
  • 4. 4 Big Data “Data is a new Class of economic asset, like currency or gold.” Davos, Suiça, 2012 – World Economic Summit
  • 5. 5 Introdução Tecnologia + Metodologia para → Capturar, Armazenar e Analisar dados 5 Vs Volume Velocidade Variedade Veracidade Valor Finalidade: dar subsidios para tomadas de decisão Muitos dados, Pouca informação
  • 6. 6 Exemplo Análise de sentimento com dados da Web e sociais Departamentos de marketing usam feeds do Twitter para realizar análise de sentimento e determinar o que os usuários estão falando sobre a empresa e seus produtos ou serviços, especialmente após o lançamento de um novo produto ou release. O sentimento do cliente deve ser integrado aos dados de perfil do cliente para derivar resultados significativos. O feedback do cliente pode variar de acordo com seus aspectos demográficos. Objetivo: direcionar a empresa em lançamentos de promoções.
  • 7. 7 Exemplo Fraudes em plano de saúde, abertura de contas O case Abertura de conta
  • 8. 8 ONDE,OQUÊ,QUANDO? Dados Estruturados Dados Não Estruturados Armaz.Distribuído Machine Learning, Data Mining Classificação: SVM, Naive-Bayes, logistic regression, K-nearest Regressão: Linear (lasso, ridge), polinomial, etc Clustering: K-means, Spectral clustering, etc Redução Dimensional: Isomap, kernel aprox, PCA, singular value decomposition Árvores de Decisão Random Forests Análise de Associação: Apriori, FP- growth Modelo Escondido de Markov Não supervisionados Supervisionados ContínuoCategórico ETL¹/MR² DADOS ANÁLISE 1. ETL: Extract, Transform and Load 2. MR: Map Reduce Data WareHouse, Sistemas Legados, Main Frame Dispositivos, SMS, Redes Sociais, Áudio, Vídeo, Geo, Logs DATA VISUALIZATION - SEARCH Copiado livremente da Apresentação de José Damico – FEMA – Set, 2015
  • 9. 9 Respostas rápidas Um pouquinho sobre performance Como suportar uma aplicação e dar feedbacks em “tempo real” para os tomadores de decisão, tendo em vista o volume e a velocidades com os quais os dados mudam? Um banco de dados suportaria a aplicação? Conhecendo um pouco sobre bases OLTP e DW, exemplo de sistema de billing.
  • 10. 10 Tecnologias Datasources: Facebook, Twitter, Blogs, Aplicações, bancos, Devices (IoT), etc... Banco de dados NoSQL (Not only Structured Query Language) – MongoDB, Cassandra, Hbase Processamento distribuido: Apache Hadoop/HDFS, Hive, Impala, Pig Análise: R, Pentaho, Python Recursos na nuvem (sob demanda elástico) Watson Explorer e Apache Solr
  • 11. 11 O Profissional O profissional big data (Data Scientist) deve ser multidisciplinar (matemática, estatística, modelagem, reconhecimento de padrões, IA, DW, ETL, High Performance Computation, etc).
  • 12. 12
  • 13. 13 Introdução http://lucene.apache.org/solr/ O que é o Apache Solr? “Solr is highly reliable, scalable and fault tolerant, providing distributed indexing, replication and load-balanced querying, automated failover and recovery, centralized configuration and more. Solr powers the search and navigation features of many of the world's largest internet sites.” Por que Apache Solr? Livre Leve Boa documentação
  • 14. 14 Conceitos Collection Documents Shards: A subset of data that is assigned to a server. Collections can have multiple Shards. Node Replica: Mirror!
  • 15. 15 Conceitos Craw – Push – Post – Schedule Formas de se efetuar Push Index Transform Search
  • 16. 16 Field x Facet We can simple define that the field represent the data itself, and the facet its such a GROUP, combined usually by volume. As described at Solr documentation “faceting is the arrangement of search results into categories based on indexed terms”. Every Facet have index to be searchable. Its possible to configure FACETS with many options like sort, searchable, etc. Each product have its possibilities. Think that when you perform a query, you will use FACETs in the “Where”, something like this: Select FIELDS from COLLECTION where FACET MY_FACET = ‘dummy’;
  • 18. 18 Passo a Passo Baixar o solr (http://lucene.apache.org/solr/ ) Descompactar ( tar -xvzf solr-6.0.0.tgz ) (at Linux)
  • 19. 19 Passo a Passo Rodar: bin/solr start -e cloud -noprompt (pode demorar alguns minutos para iniciar – aguarde finalizar)
  • 20. 20 Passo a Passo Abra no navegador o Admin Console: http://localhost:8983/solr
  • 21. 21 Passo a Passo Postando dados: bin/post -c gettingstarted docs/ (docs - pdf, etc) bin/post -c gettingstarted ../example/exampledocs/*.xml (produtos, etc)
  • 22. 22 Passo a Passo Efetuando buscas (observe que o nome da Collection esta na URL) http://localhost:8983/solr/gettingstarted/browse
  • 23. 23 Projeto Java Criaremos um projeto Maven simplesmente pela facilidade de baixar as dependencias. Caso não conheça Maven, basta criar um projeto Java comum, e baixar as dependencias abaixo, colocando no build path do projeto (as versões podem mudar): Utilizaremos a biblioteca SolrJ! http://wiki.apache.org/solr/Solrj1.3
  • 24. 24 Projeto Java Criar projeto Maven, adicionar as dependencias no pom.xml <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> <dependency> <artifactId>solr-solrj</artifactId> <groupId>org.apache.solr</groupId> <version>4.1.0</version> <type>jar</type> <scope>compile</scope> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-simple</artifactId> <version>1.7.2</version> </dependency> <dependency> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> <version>1.1.1</version> </dependency> </dependencies>
  • 25. 25 Projeto Java – Classe Exemplo (consulta) package com.ibm.solr; import java.net.MalformedURLException; import org.apache.solr.client.solrj.SolrQuery; import org.apache.solr.client.solrj.SolrServerException; import org.apache.solr.client.solrj.impl.HttpSolrServer; import org.apache.solr.client.solrj.response.QueryResponse; import org.apache.solr.common.SolrDocument; public class SolrJExample { public static void main(String[] args) throws MalformedURLException, SolrServerException { // Busca por termo na collection HttpSolrServer server = new HttpSolrServer("http://localhost:8983/solr/gettingstarted"); SolrQuery query = new SolrQuery(); //query.setQuery( ""Buscar Frase Completa""); query.setQuery( "id:id1"); //query.setQuery( "*.*"); //buscar tudo query.setFields("name","price"); // limitando campos na resposta query.setStart(0); QueryResponse queryResponse = server.query(query); for(SolrDocument document: queryResponse.getResults()){ System.out.println(document); } } }
  • 26. 26 Projeto Java – Classe Push package com.ibm.solr; import java.io.IOException; import org.apache.solr.client.solrj.SolrServerException; import org.apache.solr.client.solrj.impl.HttpSolrServer; import org.apache.solr.common.SolrInputDocument; public class SolrTest2 { public static void main(String[] args) throws SolrServerException, IOException { HttpSolrServer server = new HttpSolrServer("http://localhost:8983/solr/gettingstarted"); SolrInputDocument doc1 = new SolrInputDocument(); doc1.addField( "id", "id1" ); doc1.addField( "name", "Celular do Juliano"); doc1.addField( "manu", "Fabrica do Celular do Juliano"); doc1.addField( "price", 10 ); doc1.addField( "popularity", 10 ); server.add(doc1); } }
  • 27. 27 Projeto Java Rodando a classe de consulta, iremos buscar os documentos que contenham os critérios definidos. A classe de Post, “insere” os dados no Solr. Recomendo efetuar posts com seus dados e após isso, brincar com as buscas mudando critérios, etc. Os proximos passos em seus estudos podem ser: Criar um campo facet e efetuar buscas nele Criar uma collection manualmente, e pesquisar como fazer push a partir e dados de um banco de dados Criar uma aplicação WEB que exibe os dados do solr e permite efetuar buscas.
  • 28. 28 Limpando o Solr bin/solr stop -all ; rm -Rf example/cloud/
  • 29. 29 All text and image content in this document is licensed under the Creative Commons Attribution-Share Alike 3.0 License (unless otherwise specified). Adobe, Google, Apple, Apache, and other are registered trademarks. Their respective logos and icons are subject to international copyright laws. Thank you … … for your dedication and patience!