MongoDB et son connecteur pour Hadoop

MongoDB et son connecteur pour Hadoop

Présentation et démo (Hive/Spark) du connecteur MongoDB pour Hadoop

Bc34f46fdfa199da05a78f26584ecec3?s=128

Bruno Bonnin

October 01, 2015
Tweet

Transcript

  1. User Group Nantes MongoDB et son connecteur pour Hadoop Bruno

    Bonnin - @_bruno_b_
  2. AGENDA • Rappels sur Hadoop et son éco-système • Un

    connecteur, pour quoi faire ? • Démo avec MongoDB, Hive, Spark (version Java en 300 lignes ou version Python en 8 lignes) Nantes User Group
  3. HADOOP Nantes User Group Source : http://docs.hortonworks.com/

  4. HADOOP Nantes User Group Source : http://docs.hortonworks.com/

  5. CONNECTEUR MONGODB POUR HADOOP • Pour quoi faire ? •

    Les entreprises ont des données stockées dans MongoDB, … et dans Hadoop • Besoin d’intégration • Traiter les données à partir de plusieurs sources (en éliminant des étapes d’import/export) • … Nantes User Group
  6. QUELQUES CAS D’UTILISATION Nantes User Group Pour des analyses complexes

    faites dans Hadoop (avec des jobs Map/Reduce) Traitement de données de plusieurs sources faites dans Hadoop (repo central de données) Hadoop extrait les données de données de diverses sources, les traite et pousse les résultats dans MongoDB
  7. CONNECTEUR MONGODB POUR HADOOP • Support pour : • Hive

    : langage de requêtes SQL-like • Pig : langage de scripts pour définir des workflows de traitement • Spark • Flume • … Nantes User Group
  8. DEMO : HIVE Nantes User Group Valeur actions par minute

    Calcul des min/max dans Hadoop (M/R) + Jointure avec données dans Hadoop 1 3 2 Sociétés Valeur min/max actions par jour CREATE EXTERNAL TABLE SELECT MIN (), MAX() INSERT collection Table Hive Table Hive
  9. DEMO : HIVE ADD JAR mongo-java-driver-3.0.3.jar; ADD JAR mongo-hadoop-core-1.4.0.jar; ADD

    JAR mongo-hadoop-hive-1.4.0.jar; CREATE EXTERNAL TABLE stock_prices ( id STRUCT<oid:STRING, bsontype:INT>, symbol STRING, timestamp STRING, volume INT ) STORED BY 'com.mongodb.hadoop.hive.MongoStorageHandler' WITH SERDEPROPERTIES ( 'mongo.columns.mapping'='{"id":"_id", "symbol":"Symbol", "timestamp":"Timestamp", "volume":"Volume"}' ) TBLPROPERTIES( 'mongo.uri'='mongodb://localhost:27017/marketdata.stock_prices' ); Nantes User Group
  10. DEMO : SPARK Nantes User Group Traitement des données par

    Spark (groupBy, aggregateByKey) 1 3’ 2 Résultat #2 : Stockage dans des fichiers Source : Valeur actions par minute collection HDFS Résultat #1 : Valeur min/max actions par jour collection 3 SAVE INSERT FIND
  11. DEMO : HIVE from pyspark import SparkContext sc = SparkContext("local",

    "Test MongoDB Connector") # Config MongoDB inputConfig = { "mongo.input.uri" : "mongodb://localhost:27017/marketdata.stock_prices" } # Config pour RDD qui va lire les data dans MongoDB inputFormatClassName = "com.mongodb.hadoop.MongoInputFormat" keyClassName = "java.lang.Object" valueClassName = "org.bson.BSONObject" stockPricesRDD = sc.newAPIHadoopRDD( inputFormatClassName, keyClassName, valueClassName, None, None, inputConfig ) # Les traitements... prices = stockPricesRDD.values() # ... groupby sur (symbol, day) groupByRDD = prices.groupBy(lambda doc: (doc["Symbol"], doc["Day"])) Nantes User Group
  12. LIENS • Plus d’infos: – http://docs.mongodb.org/ecosystem/tools/hadoop/ – https://github.com/mongodb/mongo-hadoop • Code:

    – Démo : • https://github.com/bbonnin/MUG-Nantes-Demo-Hadoop – Complément : • https://github.com/bbonnin/hadoop-mongodb Nantes User Group
  13. MERCI ! Nantes User Group