mercredi 24 mai 2017

Hadoop et Big Data Studio

Tester Hadoop nécessite une configuration matérielle puissante. Presque toutes les distributions sandbox hadoop actuelles nécessitent au moins 8go de ram de disponible. J'en ai testé quelques une, mais difficile de travailler correctement si on a un pc avec 8go ram, et un windows qui prends déjà au minimum 2go.

Et suis tombé sur la distribution "Syncfusion Big Data Platform", avec cette distribution ,et les 6go de ram disponible, seul  le service spark refuse de démarrer par manque de mémoire avec le service Hbase laissé en arrêt (pour économiser un peu de ram), les autres composants Hdfs, pig, hive, fonctionnent correctement. Pas mal de démos accompagnent cette distribution.

Lien de téléchargement : https://www.syncfusion.com/products/big-data

Attention, c'est une version d'essai (30jours), télécharger la version pour développement.

L'installation est très simple.

A la fin de l'installation, lancer "Syncfusion Big Data Dashboard"

Cliquer sur "Service Manager", et attendre que les services hadoop et hive démarrent correctement


Cliquer sur "Launch Studio" : l'interface pour accéder graphiquement à tous les composants


Plan de test : charger un fichier dans HDFS et créer une table Hive pour faciliter l'exploitation, exploiter cette table depuis Qlik Sense 
1) Import de fichier dans Hdfs

Pour test, j'ai prix le fichier suivant :
https://www.data.gouv.fr/fr/datasets/les-moyens-consacres-a-la-r-d-les-entreprises-par-branche-d-activite-mesr/
Ce jeu de données présente les moyens financiers et humains consacrés à la recherche et au développement dans les entreprises par zone géographique, année, branche d'activité et type de personnel.

Pour insérer un fichier manuellement dans hadoop, il faut utiliser la commande :

hdfs dfs -copyFromLocal <fichier source> <hdfs de destination>

L'outil offre une interface graphique pour le faire facilement.

Depuis l'onglet HDFS, cliquer sur "New" pour créer le répertoire de destination
Sélectionner ce nouveau répertoire, et clique droit et choisir "Permissions" :


Pour charger le fichier, mettez-vous dans le répertoire créé, et cliquer sur le bouton "Upload", cocher "File", sélectionner le fichier que vous avez récupéré et cliquer sur "Upload"


2) Test du fichier dans Hdfs

Cliquer sur l'onglet "Hadoop", cliquer sur "Script" puis "New"
Et taper et exécuter la commande "hdfs dfs -tail /datawarehouse/fr-esr-rd-moyens-entreprises-branche.csv;" 

Cela affiche les derniers kilobytes notre fichier

3) Table Hive

Hive : c'est l'accès aux données en "Sql like" dans hadoop

Cliquer sur l'onglet "Hive", cliquer sur "New Database" pour créer une nouvelle base (ici dwh), et cliquer sur "Script" puis "New" pour exécuter un script de création de la table hive :

Il y a un bouton "New Table" pour créer la table, je préfère le faire en script, cela permet de gérer pas mal d'options, ci-après le script de création de la table :
CREATE TABLE dwh.stat_entreprise_rd(
code_zone_geo INT,
zone_geographique STRING,
annee INT,
code_indicateur STRING,
indicateur STRING,
code_type_pers INT,
type_de_personnel STRING,
code_branche INT,
branche_d_activite STRING,
secret STRING,
non_disponible STRING,
etat_des_donnees STRING,
valeur DECIMAL(12,2))
COMMENT 'Table contenant les stats RD des entreprises'
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde'
WITH SERDEPROPERTIES (
   "separatorChar" = "\u0059"
)
STORED AS TEXTFILE
LOCATION '/datawarehouse'
tblproperties ("skip.header.line.count"="1");

"separatorChar" = "\u0059" -> indique le séparateur ";"
tblproperties ("skip.header.line.count"="1") -> pour ignorer la première ligne

Testons avec le sql suivant :

select zone_geographique,sum(valeur) from dwh.stat_entreprise_rd group by zone_geographique;


A suivre : exploitation de la table


dimanche 21 mai 2017

Oracle Data Integrator 12c : Partie 2 - Création d'un référentiel

Qu'est ce qu'un référentiel Odi ?

Dans Odi, un référentiel est un endroit (base de données), où l'outil enregistre le code, les sessions, .... En gros, Odi enregistre et trace tous ce qu'on fait depuis Odi studio dans son référentiel.

Pour pouvoir continuer, assurez-vous d'avoir suivi et fait les installations suivantes :

Odi Studio 12c : http://arakotovao.blogspot.fr/2017/05/oracle-data-integrator-12c-partie-1.html
Pour le référentiel : http://arakotovao.blogspot.fr/2017/05/installer-une-base-de-donnee-oracle.html

Un référentiel odi est composé deux parties : un référentiel maître et un référentiel de travail

Le référentiel maître est un emplacement (ici schéma oracle) qu'odi utilise pour enregistrer les informations techniques (tous ce qui se trouvent dans Topologie et Sécurité): les connexions, les schémas physiques et logiques, les contextes, les agents, et la sécurité

Le référentiel de travail est un endroit (ici schéma oracle) qu'odi utilise pour enregistrer les informations concernant le développement (interface, scénarios, sessions, ...)

Physiquement, on peut utiliser un seul schéma pour les deux, ou deux schémas distincts

1. Création d'un schéma oracle pour le référentiel
  • Assurez-vous que votre container "Oracle-Xe" est bien demarré
  • Lancer Dbeaver (ou autre client Sql) et créé une nouvelle connexion :

Paramètres à adapter selon vos propres paramétrages.
  • Créer un nouveau script et exécuter les commandes ci-dessous

-- on créé l'utilisateur odi_repo avec mot de passe oracle
CREATE USER odi_repo IDENTIFIED BY oracle
-- on donne à l'utilisateur créé le droit de dba 
GRANT DBA TO odi_repo;

Installer une base de données Oracle sous Windows avec Docker (Kitematic)

Besoin : avoir une base de données Oracle (test ou petit développement)

Installer une base de données Oracle sur son Pc pour des besoins de test ou de développement est très consommatrices de ressources. Pour éviter cela, je vous conseille d'utiliser docker (via Kitematic).
Avec docker, pas de services qui démarrent en même temps que votre système windows. Vous démarrez votre base à la demande.
"Docker c'est quoi"
"Docker est un logiciel libre qui automatise le déploiement d'applications dans des conteneurs logiciels. Selon la firme de recherche sur l'industrie 451 Research, « Docker est un outil qui peut empaqueter une application et ses dépendances dans un conteneur isolé, qui pourra être exécuté sur n'importe quel serveur Linux ». Ceci permet d'étendre la flexibilité et la portabilité d’exécution d'une application, que ce soit sur la machine locale, un cloud privé ou public, une machine nue, etc" https://fr.wikipedia.org/wiki/Docker_(logiciel)
Télécharger le ici : https://www.docker.com/products/docker-toolbox
L'installation est simple.

1. Installation d'une base de données oracle sous Docker


Lancer "Docker Kitematic" et cliquer sur "New" (en haut à gauche de l'interface)

Dans la barre de recherche à droite, saisissez "oracle xe", dans la liste, cliquer sur le bouton "Create" du container "wnameless oracle-xe-11g"

Après complétion du téléchargement, le conteneur démarre automatiquement


 2. Paramétrage du container

Pour pouvoir accéder au container oracle-xe, il faut renseigner les ports d'accès externe comme suit :
Cliquer sur l'onglet "Settings" (à droite de l'interface Kitematic) puis "Ports"
Renseigner les ports d'accès externe 32768, 32769, 32767 -> évidemment personnalisable selon vos contraintes

3. Test d'accès

Pour accéder à la base de données "oracle-xe" créée, vous pouvez utiliser un sql client comme Sql developer, Squirrel, ou dbeaver

Pour dbeaver, vous pouvez le télécharger gratuitement ici: http://dbeaver.jkiss.org/download/enterprise/

Informations d'accès :

Host : 192.168.99.100 (à modifier, selon l'adresse IP afficher par votre container)
Port : 32769 (au lieu de 1521)
Sid  : xe
User : system ou sys
Mdp  : oracle


Oracle Data Integrator 12c : Partie 1 - Installation de l'outil Studio

Pré-requis : 

  • Jdk 1.8 + -> http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 
  • Télécharger les fichiers d'installation d'odi 12c: Oracle Data Integrator 12cR2 (12.2.1.2.6) -> http://www.oracle.com/technetwork/middleware/data-integrator/downloads/index.html
Installer le Jdk, de-zipper les fichiers d'installations dans un répertoire

Exemple :

  • emplacement du jdk : C:\Program Files\Java\jdk1.8.0_131
  • répertoire fichiers d'installation : C:\odi
Installation : 

Lancer l'invite de commandes windows et exécuter-le en "Exécuter en tant qu'administrateur" 
Lancer la commande :
cd C:\odi  
"C:\Program Files\Java\jdk1.8.0_131\bin\java" –jar fmw_12.2.1.2.6_odi.jar
Attention -> commande à personnaliser si vous avez choisi d'autre emplacement
  • Un écran de bienvenu est affiché, cliquer sur "Suivant"
  • Demande de mise à jour automatiques, à ignorer ou renseigner les informations nécessaires sinon, cliquer sur "Suivant"

jeudi 18 mai 2017

Talend et tWaitForFile : scan de dossier

Ayant eu un besoin personnel de scruter un dossier et d'envoyer les fichiers arrivés par mail, je vous partage la solution que j'ai choisi.
N'hésitez pas à commenter

Besoin : scan d'un dossier particulier, attente de l'arrivé de fichiers, puis envoi par mail
Version de Talend utilisé : 6.4.0


1) Créer un job Talend (clique droit sur Jobs / puis Créer un job)


Remarque : j'ai classé mon job dans un dossier créé à part


2) Principe et composants utilisés 

On scrute le répertoire par le composant tWaitForFile
Par itération (si plusieurs fichiers), on envoi par mail le(s) fichier(s)
Chaque fichier traité est déplacé dans un autre répertoire


3) Réalisation 

 a) Depuis la palette d'outils, dans « Orchestration », prendre le composant « tWaitForFile » vers votre job

 b) Depuis la palette d'outils, dans « Internet », prendre le composant « tSendMail » vers votre job

 c) Depuis la palette d'outils, dans « Fichier / Gestion », prendre le composant « tFileCopy » vers votre job