2016 02-24 - Piattaforme per i Big Data
-
Upload
alberto-paro -
Category
Technology
-
view
138 -
download
1
Transcript of 2016 02-24 - Piattaforme per i Big Data
Roma - 24 Febbraio 2016presenta Alberto Paro, BNova Technical Advisor
Piattaforme per i Big Data
Alberto Paro Laureato in Ingegneria Informatica (POLIMI)
Technical Advisor per BNova Autore di due libri su ElasticSearch + 6 Tech review Lavoro principalmente in Scala e su tecnologie BD
(Akka, Spray.io, Playframework, Apache Spark) e NoSQL (Cassandra, ElasticSearch e MongoDB)
Evangelist linguaggio Scala e Scala.JS
La ‘Datafication’
Actività Conversazioni Testo Voce Social Media Browser log Foto Video Sensori Etc.
Volume
Veracity
Variety
Velocity
Big Data Analysing:
Text analytics Sentiment
analysis Face
recognition Voice analytics Movement
analytics Etc.
Valore
Trasformare Big Data in Valore:
NoSQL - Definizione
Ogni database che non è un “Database relazionale” Il termine fu coniato durante un meet-up “Non-relational Databases” Not Only SQL
NoSQL - Tipologie
Key-Value Redis Voldemort Dynomite Tokio*
BigTable Clones Accumulo Hbase Cassandra
Document CouchDB MongoDB Redis
GraphDB Neo4j OrientDB …Graph
NoSQL - Evolution
NoSQL
Non esiste il “DB” che copre tutte le casistiche. Ognuno ha caratteristiche proprie.
Il mercato sta effettuando “selezione naturale” Spesso occorre utilizzare più di un NoSQL. Hadoop e/o Spark sono il collante.
Hadoop / SparkHadoop MapReduce
Apache Spark
Evoluzione del modello Map Reduce
Apache Spark
Scritto in Scala con API in Java, Python e R Evoluzione del modello Map/Reduce Potenti moduli a corredo:
Spark SQL Spark Streaming MLLib (Machine Learning) GraphX (graph)
Linguaggio - Scala
Nato da uno degli autori del compilatore di Java Interoperabile con Java Approccio Reattivo Funzionale + Object Oriented + Actor Model Concorrenza by design Strong typed Linguaggio base di Spark / Akka / Playframework
Linguaggio – Scala vs Javapublic class User { private String firstName; private String lastName; private String email; private Password password; public User(String firstName, String lastName, String email, Password password) { this.firstName = firstName; this.lastName = lastName; this.email = email; this.password = password; }
public String getFirstName() {return firstName; } public void setFirstName(String firstName) { this.firstName = firstName; } public String getLastName() { return lastName; } public void setLastName(String lastName) { this.lastName = lastName; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public Password getPassword() { return password; } public void setPassword(Password password) { this.password = password; } @Override public String toString() { return "User [email=" + email + ", firstName=" + firstName + ", lastName=" + lastName + "]"; } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((email == null) ? 0 : email.hashCode()); result = prime * result + ((firstName == null) ? 0 : firstName.hashCode()); result = prime * result + ((lastName == null) ? 0 : firstName.hashCode()); result = prime * result + ((password == null) ? 0 : password.hashCode()); return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; User other = (User) obj; if (email == null) { if (other.email != null) return false; } else if (!email.equals(other.email)) return false; if (password == null) { if (other.password != null) return false; } else if (!password.equals(other.password)) return false; if (firstName == null) { if (other.firstName != null) return false; } else if (!firstName.equals(other.firstName)) return false; if (lastName == null) { if (other.lastName != null) return false; } else if (!lastName.equals(other.lastName)) return false; return true; } }
case class User(var firstName:String, var lastName:String, var email:String, var password:Password)
JAVASCALA
Scala.JS Interoperabilità con Javascript Permette di compilare codice Scala in
Javascript => Typesafe Riuso di algoritmi/Modelli BK->FE Sinergia con React.js Permette lo sviluppo di SPA di grandi
dimensioni
Link Utili Cassandra: http://cassandra.apache.org/ MongoDB: https://www.mongodb.org/ Neo4J: http://neo4j.com/ Spark: http://spark.apache.org/ Scala:
http://scala-lang.org/ http://www.scala-js.org/
Grazie per l’attenzione
Alberto Paro
Q&A