Big Data

John Samuel
CPE Lyon

Année: 2019-2020
Courriel: john(dot)samuel(at)cpe(dot)fr

Creative Commons License

Big Data

Objectifs

  1. Histoire scientifique
  2. Les phases macroscopiques du Big Data
  3. Fouille de données

1. Histoire scientifique

Cadran solaire

Ancien cadran solaire egyptien (1500 av. J.-C. )

1. Histoire scientifique

Système de numération

1. Histoire scientifique

Machine à écrire
Machine à écrire électronique

1. Histoire scientifique

Machine à calculer de Blaise Pascal à six chiffres
Machine à différences de Charles Babbage

1. Histoire scientifique

L'ENIAC (photo prise entre 1947 et 1955).
IBM PC 5150 en 1983

1. Histoire scientifique

Imprimante matricielle (Panasonic)

1. Histoire scientifique

Disquettes 8 pouces, 5,25 pouces et 3,5 pouces
L’intérieur d’un disque dur

1. Histoire scientifique

Stockage: Serveurs

1. Histoire scientifique

Croissance de la capacité mondiale de stockage de données et informations

2. Les phases macroscopiques

  1. Acquisition
  2. Extraction
  3. Nettoyage
  4. Stockage
  5. Analysis
  6. Visualisation

2.1 L'acquisition de données

Caissier (Achats)

2.1 L'acquisition de données

Guichet Automatique Bancaire (Transactions financières)

2.1 L'acquisition de données

Capteurs (température)

2.1 L'acquisition de données

Caméras de surveillance

2.1 L'acquisition de données

Réseautage social

2.1 L'acquisition de données

Production participative (Crowdsourcing)

2.1 L'acquisition de données

Production collaborative

2.1 L'acquisition de données

Enregistrement de données

                     $ tail /var/log/apache2/access.log
                   
127.0.0.1 - - [14/Nov/2018:14:46:49 +0100] "GET / HTTP/1.1" 200 3477 "-"
         "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:63.0) Gecko/20100101 Firefox/63.0"
127.0.0.1 - - [14/Nov/2018:14:46:49 +0100] "GET /icons/ubuntu-logo.png HTTP/1.1" 304 180 "http://localhost/"
         "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:63.0) Gecko/20100101 Firefox/63.0"
127.0.0.1 - - [14/Nov/2018:14:46:49 +0100] "GET /favicon.ico HTTP/1.1" 404 294 "-"
         "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:63.0) Gecko/20100101 Firefox/63.0"
                   

2.1 L'acquisition de données

Enregistrement de données

                     $ tail /var/log/apache2/error.log
                   
[Wed Nov 14 09:53:39.563044 2018] [mpm_prefork:notice] [pid 849]
         AH00163: Apache/2.4.29 (Ubuntu) configured -- resuming normal operations
[Wed Nov 14 09:53:39.563066 2018] [core:notice] [pid 849]
         AH00094: Command line: '/usr/sbin/apache2'
[Wed Nov 14 11:35:35.060638 2018] [mpm_prefork:notice] [pid 849]
         AH00169: caught SIGTERM, shutting down
                   

2.1 L'acquisition de données

LogLevel (https://httpd.apache.org/docs/2.4/mod/core.html#loglevel)

2.1 L'acquisition de données

Log Format (https://httpd.apache.org/docs/2.4/mod/core.html#errorlogformat)

2.1 L'acquisition de données

Log Format (https://httpd.apache.org/docs/2.4/mod/core.html#errorlogformat)

2.1 L'acquisition de données

Enregistrement de données

                    $ cat /etc/apache2/apache2.conf
                   
LogFormat "%v:%p %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined
LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %O" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent

                   

2.1 L'acquisition de données

  1. Questionnaires
    • Questionnaires face à face
    • Questionnaires en ligne
  2. Capteurs1
    • Température, pression, humidité
    • Acoustique, navigation
    • Proximité, capteurs de présence
  3. Réseau sociaux
  4. Vidéo de surveillance
  5. Web
  6. Enregistrement
  1. https://en.wikipedia.org/wiki/List_of_sensors
Different types of data acquistion techniques

2.1 L'acquisition de données

Vie privée

2.1 L'acquisition de données

Licences, Ethiques et la vie privé

2.1 L'acquisition de données

Exemples: Creative Commons (CC)

2.1 L'acquisition de données

Exemples: Creative Commons (CC)

2.2 L'integration et l'extraction de données

Robot d'indexation
from urllib import request

response = request.urlopen("https://en.wikipedia.org/wiki/Main_Page")
html = response.read()

2.2 L'integration et l'extraction de données

Robot d'indexation
from urllib import request
from lxml import html

document = html.parse(request.urlopen("https://en.wikipedia.org/wiki/Main_Page"))
for link in document.iter("a"):
    if(link.get("href") is not None):
        print(link.base_url+link.get("href"))

2.2 L'integration et l'extraction de données

API (Interface de programmation)
import requests
url = "https://api.github.com/users/johnsamuelwrites"

response = requests.get(url)
print(response.json())

2.2 L'integration et l'extraction de données

API (Interface de programmation)
import requests
url = "https://api.github.com/users/johnsamuelwrites/repos"

response = requests.get(url)
print(response.json())

2.2 L'integration et l'extraction de données

Donnée ouverte (Open Data)
from SPARQLWrapper import SPARQLWrapper, JSON

sparql = SPARQLWrapper("http://query.wikidata.org/sparql")
sparql.setQuery("""
SELECT ?item WHERE {
  ?item wdt:P31 wd:Q9143;
}
LIMIT 10
""")
sparql.setReturnFormat(JSON)
results = sparql.query().convert()

for result in results["results"]["bindings"]:
    print(result)

2.2 L'integration et l'extraction de données

Web des données (Linked Open data cloud)

2.2 L'integration et l'extraction de données

Les identifiants externes (Paris, Wikidata)

2.2 L'integration et l'extraction de données

Données archivées et historiques

2.3 Nettoyage de données

2.3 Nettoyage de données: Erreurs de syntaxe

2.3 Nettoyage de données: Erreurs de syntaxe

Exemple: XSLT

2.3 Nettoyage de données: Erreurs sémantiques

2.3 Nettoyage de données: Erreurs de couverture

Exemple: Pandas

2.3 Nettoyage de données: Erreurs de couverture

2.4 Stockage de données

Big Data

2. Stockage de données

  1. Fichiers
  2. Blockchain
  3. Base de données (Rélationnels et NoSQL)

2.4 Stockage de données

Formats

2.4 Stockage de données

Types de données

  1. Données structurées
  2. Données non-structurées
  3. Données semi-structurées

2.4 Stockage de données

Blockchain (Metadonnées)

2.4 Stockage de données

Blockchain (Blocs de Bitcoin)

2.4 Stockage de données

2.4 Stockage de données: NoSQL

Base de données clé-valeur
Base de données orientée colonnes
Base de données orientée graphe

2.5 Analyse des données

2.5 Analyse des données: images

Analyse d'images en histologie

2.5 Analyse des données: Robotique industrielle

Un robot industriel Motoman SDA10, robot d'assemblage

2.5 Analyse des données: Véhicule autonome

Voiture autonome dont on distingue certains capteurs sur le toit.

2.5 Analyse des données: Détection d'objet

Détection d'objet
Detection des personnes

2.5 Analyse des données: MapReduce

MapReduce

2.5 Analyse des données: Hadoop HDFS

Hadoop HDFS

2.5 Analyse des données: Apache Hive

Hive

2.5 Analyse des données: Apache Hive

        $  head /home/john/Downloads/query.csv
             itemLabel,year
             Amiga E,1993
             Embarcadero Delphi,1995
             Sather,1990
             Microsoft Small Basic,2008
             Squeak,1996
             AutoIt,1999
             Eiffel,1985
             Eiffel,1986
             Kent Recursive Calculator,1981
			
Hive

2.5 Analyse des données: Apache Hive

Hive
                          $ export HADOOP_HOME="..."
                          $ ./hive
                          hive> set hive.metastore.warehouse.dir=${env:HOME}/hive/warehouse;
			

2.5 Analyse des données: Apache Hive

Hive
                          $./hive
                          hive> set hive.metastore.warehouse.dir=${env:HOME}/hive/warehouse;
                          hive> create database mydb;
                          hive> use mydb;
			

2.5 Analyse des données: Apache Hive

        $./hive
        hive> use mydb;
        hive> CREATE TABLE IF NOT EXISTS
             proglang (name String, year int)
             COMMENT "Programming Languages"
             ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
             LINES TERMINATED BY '\n'
             STORED AS TEXTFILE;
        hive> LOAD DATA LOCAL INPATH '/home/john/Downloads/query.csv'
             OVERWRITE INTO TABLE proglang;
			
Hive

2.5 Analyse des données: Apache Hive

Hive
        $./hive
        hive> SELECT * from proglang;
        hive> SELECT * from proglang where year > 1980;
			

2.5 Analyse des données: Apache Hive

Hive
        $./hive
        hive> DELETE from proglang where year=1980;
	FAILED: SemanticException [Error 10294]: Attempt to do update
	  or delete using transaction manager that does not support these operations.
			

2.5 Analyse des données: Apache Hive

        $./hive
        hive> set hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager;
        hive> DELETE from proglang where year=1980;
	FAILED: RuntimeException [Error 10264]: To use
	  DbTxnManager you must set hive.support.concurrency=true
        hive> set hive.support.concurrency=true;
        hive> DELETE from proglang where year=1980;
	FAILED: SemanticException [Error 10297]: Attempt to do update
	  or delete on table mydb.proglang that is not transactional
        hive> ALTER TABLE proglang set TBLPROPERTIES ('transactional'='true') ;
	FAILED: Execution Error, return code 1 from i
          org.apache.hadoop.hive.ql.exec.DDLTask. Unable to alter table.
          The table must be stored using an ACID compliant format
	  (such as ORC): mydb.proglang
			

2.5 Analyse des données: Apache Hive

        $./hive
        hive> use mydb;
        hive> CREATE TABLE IF NOT EXISTS
             proglangorc (name String, year int)
             COMMENT "Programming Languages"
             ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
             LINES TERMINATED BY '\n'
             STORED AS ORC;
        hive> LOAD DATA LOCAL INPATH '/home/john/Downloads/query.csv'
             OVERWRITE INTO TABLE proglangorc;
	FAILED: SemanticException Unable to load data to destination table.
          Error: The file that you are trying to load does not match
	   the file format of the destination table.
			
Hive

2.5 Analyse des données: Apache Hive

        $./hive
        hive> insert overwrite table proglangorc select * from proglang;
        hive> DELETE from proglangorc where year=1980;
	FAILED: SemanticException [Error 10297]: Attempt to do update
	  or delete on table mydb.proglangorc that is not transactional
        hive> ALTER TABLE proglangorc set TBLPROPERTIES ('transactional'='true') ;
        hive> DELETE from proglangorc where year=1980;
        hive> SELECT count(*) from proglangorc;
        hive> SELECT count(*) from proglangorc where year=1980;
			
Hive

2.5 Analyse des données: Apache Spark

Hive
                          $./pyspark
   >>> lines = sc.textFile("/home/john/Downloads/query.csv")
   >>> lineLengths = lines.map(lambda s: len(s))
   >>> totalLength = lineLengths.reduce(lambda a, b: a + b)
   >>> print(totalLength)
			

2.6 Visualisation

Oculométrie (Eye-tracking)

2.6 Visualisation

Enjeux du réchauffement climatique: 1880(à gauche)/ 1980 (à droite), (US EPA), 2012

2.6 Visualisation

Site archéologiques de monde

2.6 Visualisation

Artistes (Histropedia)

3. Fouille de données

Cycle de vie des données

  1. Données
  2. Connaissances
  3. Perspectives
  4. Actions
Data Lifecycle

3. Fouille de données

Usine 4.0

Industrie 4.0

3.1. Régularités

3.1. Régularités

Régularités naturelles

3.1. Régularités

Créations humaines

3.1. Régularités

Création

3.2. Fouille de données

Synonymes

3.2 Reconnaissance de formes

3.2 Reconnaissance de formes

Activités

  1. Classification
  2. Partitionnement de données (Clustering)
  3. Régression
  4. Détection d'anomalies

3.2.1. Classification

3.2.1. Classification

Applications

3.2.1. Classification

Classificateur

3.2.2 Partitionnement de données (Clustering)

3.2.2 Partitionnement de données (Clustering)

Applications

3.2.2 Partitionnement de données (Clustering)

Méthodes de partitionnement des données

3.2.3. Régression

3.2.3. Régression

Applications

3.2.4 Détection d'anomalies

3.2.4 Détection d'anomalies

Applications

3.2.5. Récapitulation

3.2.5. Récapitulation

Applications

3.3. Réseau de neurones artificiels

Artificial neural networks

3.3. Réseau de neurones artificiels

Perceptron

Perceptron

3.3. Réseau de neurones artificiels

Réseaux neuronaux profonds (Deep neural networks)

3.3. Réseau de neurones artificiels

Applications

3.3. Réseau de neurones artificiels

Réseau neuronal convolutif

3.3. Réseau de neurones artificiels

Apprentissage par renforcement

Références

Crédits d'images