Big Data

John Samuel
CPE Lyon

Année: 2020-2021
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

1. Histoire scientifique

Calcul distribué
https://commons.wikimedia.org/wiki/File:Distributed-parallel.svg

1. Histoire scientifique

Calcul distribué

1. Histoire scientifique

Tendances de recherche Google (novembre 2020): Big Data

1. Histoire scientifique

Tendances de recherche Google (novembre 2020): Big Data et Artificial Intelligence

1. Histoire scientifique

Tendances de recherche Google (novembre 2020): Big Data, Artificial Intelligence et Blockchain

1. Histoire scientifique

Le populisme de la base de données [Driscoll 2012]

1. Histoire scientifique

Big Data: 3V [Chen 2012, Kwon 2014, Gandomi 2015]

1. Histoire scientifique

Big Data: 6V [Gandomi 2015]

1. Histoire scientifique

Big Data [Kitchin 2016]

2. Les phases macroscopiques

Les défis [Chen 2014, Jagadish 2014, Pouchard 2015]

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

2. Les phases macroscopiques

Cycle de vie des données

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

2. Les phases macroscopiques

Web sémantique

Semantic Web Stack

2.1 L'acquisition de données

Les super marchés et le shopping [Dennis 2001]

Caissier (Achats)

2.1 L'acquisition de données

Les achats en ligne [Chen, Daqing 2012]

Les achats en ligne

2.1 L'acquisition de données

Les transactions financières [Kovalerchuk 2005]

Guichet Automatique Bancaire (Transactions financières)[Kovalerchuk 2005]

2.1 L'acquisition de données

Les capteurs [Shen Bin 2010]

Capteurs (température)

2.1 L'acquisition de données

Les vidéos [Brax 2008]

Caméras de surveillance

2.1 L'acquisition de données

Les médias et réseaux sociaux [Aggarwal 2011]

Réseautage social [Aggarwal 2011]

2.1 L'acquisition de données

Production participative [Gao 2011]

Production participative (Crowdsourcing)

2.1 L'acquisition de données

Production participative [Nakayama 2007]

Production collaborative [Nakayama 2007]

2.1 L'acquisition de données

Enregistrement de données [Alspaugh 2014]

                     $ 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 [Alspaugh 2014]

                     $ 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

Enregistrement de données

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

2.1 L'acquisition de données

Enregistrement 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

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

L'acquisition de données [Lenzerini 2002][Dong 2013]

  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 [Rizvi 2002][Xu 2014]

Vie privée

2.1 L'acquisition de données

Licences, Ethiques et la vie privé [van Wel 2004]

2.1 L'acquisition de données

Ethiques [Zwitter 2014]

2.1 L'acquisition de données

Ethiques [Richards 2014]

2.1 L'acquisition de données

Licences

Exemples: Creative Commons (CC)

2.1 L'acquisition de données

Licences

Exemples: Creative Commons (CC)

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

L'extraction de données web [Laender 2002]

from urllib import request

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

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

L'extraction de données web [Laender 2002]

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"))
Robot d'indexation

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

L'extraction de données web

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

L'extraction de données web

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ées ouvertes [Murray-Rust 2008]

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

Linked Open data (LOD) [Bauer 2012]

Web des données (Linked Open data cloud)

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

Wikidata [Vrandečić 2014]

Les identifiants externes (Paris, Wikidata)

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

Internet Archive [AlNoamany 2014]

Données archivées et historiques

2.3 Nettoyage de données

Nettoyage de données

2.3 Nettoyage de données: Erreurs de syntaxe

Erreurs de syntaxe

2.3 Nettoyage de données: Erreurs de syntaxe

Erreurs de syntaxe

Exemple: XSLT

2.3 Nettoyage de données: Erreurs sémantiques

Erreurs sémantiques [Abedjan 2016]

2.3 Nettoyage de données: Erreurs de couverture

Erreurs de couverture

Exemple: Pandas

2.4 Stockage de données

Big Data

2.4. 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 [Crosby 2016,Nofer 2017]

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

Analyses [Gandomi 2015]

2.5 Analyse des données

2.5 Analyse des données

Les super marchés et le shopping [Dennis 2001]

La gestion des connaissances clients

Caissier (Achats)

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.5 Analyse des données: Apache Spark

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

2.5 Analyse des données: Apache Spark

Apache SPARK et Jupyter
                          $ export SPARK_HOME='.../spark/spark-x.x.x-bin-hadoopx.x/bin
			  $ export PYSPARK_PYTHON=/usr/bin/python3
			  $ export PYSPARK_DRIVER_PYTHON=jupyter
			  $ export PYSPARK_DRIVER_PYTHON_OPTS='notebook'
			  $ ./pyspark
			

2.5 Analyse des données: Apache Spark

Apache SPARK et Jupyter

2.5 Analyse des données: Apache Spark

Apache SPARK, Jupyter et Hive

			from pyspark.sql import HiveContext
sqlContext = HiveContext(sc)
sqlContext.sql("use default")
sqlContext.sql("show tables").show()

2.5 Analyse des données: Apache Spark

Apache SPARK, Jupyter et Hive

			+--------+---------+-----------+
                        |database|tableName|isTemporary|
+--------+---------+-----------+
| default| proglang| false|
| default|proglang2| false|
+--------+---------+-----------+

2.5 Analyse des données: Apache Spark

Apache SPARK, Jupyter et Hive

			result = sqlContext.sql("SELECT count(*) FROM proglang ")
result.show()
+--------+
|count(1)|
+--------+
| 611|
+--------+

2.5 Analyse des données: Apache Spark

Apache SPARK, Jupyter et Hive

			print(type(result))
			
			<class 'pyspark.sql.dataframe.DataFrame'>
			

2.5 Analyse des données: Apache Spark

Apache SPARK, Jupyter, Hive et Pandas

			import pandas as pd
result = sqlContext.sql("SELECT count(*) as count FROM proglang ")
resultFrame = result.toPandas()
print(resultFrame)
                        |count|
+-----+
| 611|

2.5 Analyse des données: Apache Spark

Apache SPARK, Jupyter, Hive et Pandas

			import pandas as pd
result = sqlContext.sql("SELECT * FROM proglang ")
resultFrame = result.toPandas()
groups = resultFrame.groupby('year').count()
print(groups)

2.5 Analyse des données: NLTK

Aanalyse des sentiments

			import nltk
nltk.download('vader_lexicon')

2.5 Analyse des données: NLTK

Aanalyse des sentiments

			from nltk.sentiment.vader import SentimentIntensityAnalyzer
sia = SentimentIntensityAnalyzer()
sentiment = sia.polarity_scores("this movie is good")
print(sentiment)
sentiment = sia.polarity_scores("this movie is not very good")
print(sentiment)
sentiment = sia.polarity_scores("this movie is bad")
print(sentiment)

2.5 Analyse des données: NLTK

Aanalyse des sentiments

			{'neg': 0.0, 'neu': 0.508, 'pos': 0.492, 'compound': 0.4404}
{'neg': 0.344, 'neu': 0.656, 'pos': 0.0, 'compound': -0.3865}
{'neg': 0.538, 'neu': 0.462, 'pos': 0.0, 'compound': -0.5423}

2.6 Visualisation

Les variables visuelles [Jacques Bertin]

  1. position
  2. taille
  3. forme
  4. valeur
  5. couleur
  6. orientation
  7. texture
  1. https://en.wikipedia.org/wiki/Visual_variable

2.6 Visualisation

Visualisation de données

  1. séries temporelles
  2. classement
  3. partie à l'ensemble
  4. écart
  5. triage
  6. distribution des fréquences
  7. corrélation
  8. comparaison nominale
  9. géographique ou géospatial
  1. https://en.wikipedia.org/wiki/Data_visualization

2.6 Visualisation

Visualisation de données: exemples

  1. Diagramme en bâtons (comparaison nominale)
  2. Diagramme circulaire (partie à l'ensemble)
  3. Histogramme (distribution des fréquences)
  4. Nuage de points (corrélation)
  5. Réseaux
  6. Graphique linéaire (séries temporelles)
  7. Arborescence
  8. Diagramme de Gantt
  9. Carte thermique/heatmap
  1. https://fr.wikipedia.org/wiki/Repr%C3%A9sentation_graphique_de_donn%C3%A9es

2.6 Visualisation

Diagramme circulaire

2.6 Visualisation

Les paradigmes du langage de programmation (diagramme à bulles)

2.6 Visualisation

Historique des langages de programmation (Histropedia)

2.6 Visualisation

Diagramme d'influence des langages de programmation

2.6 Visualisation

k couleurs prédominantes

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

Articles de recherche

Références

Articles de recherche

Références

Articles de recherche

Références

Articles de recherche

Références

Crédits d'images