lundi 18 novembre 2013

Manipuler de gros fichiers en ayant peu de mémoire vive

SAS a une gestion très poussée de la mémoire, cet outil propriétaire permet de manipuler des bases de données de très grande taille et utilise la mémoire vive ainsi que le disque dur comme espace de travail, or cet outil n'est pas toujours disponible dans les petites structures et présente un coût non négligeable en licence.

R est un outil puissant de modélisation, mais dans le domaine du datamanagement il a un certain nombre de faiblesses : la taille des tables est limitée par la taille de la mémoire vive, les modules complémentaires de R qui facilitent le chargement de grosses tables ne permettent pas d'accéder à l'ensemble des librairies de modélisation.
Pour la partie modélisation, il semble difficile de s'astreindre des contraintes en mémoire vive, on utilisera volontiers des technologies cloud telles qu' Amazon EC2. Pour le datamanagement, il est possible de réaliser la plupart des manipulations de fichier avec des ressources très faibles avec PostgreSQL ou le langage de programmation PYTHON.


1. PostgreSQL

PostgreSQL est un système de gestion de base de données gratuit et très puissant, l'installation est très simple et permet de charger et manipuler des tables de grandes tailles.
Par le passé ayant déjà utilisé des bases de données sur des outils limités tels que Access je constate que la mise en place de PostgreSQL aurait permis à de nombreuses structures de gagner en rapidité et en optimisation des traitements.

Lors d'installation, il faut créer un utilisateur
Lancement de postgres : sudo -i -u postgres puis psql.

Commande base 
Lister les tables  : \d
Lister les colonnes d'une table : \d nom_de_la_table
Effacer table : drop table nom_de_la_table;

Création de la table et de ces variables
CREATE TABLE TRAIN (ID BIGINT PRIMARY KEY,TITLE TEXT,BODY TEXT,TAGS TEXT);

Importer un fichier csv dans la table TRAIN
COPY TRAIN FROM   '/home/alfard/Documents/Kaggle/Facebook2/Train.csv' csv header;
Une fois la table importée on peut réaliser les traitements en utilisant le langage SQL.

Exporter une table en fichier csv
COPY matable TO '/root/pg/extraction.csv' WITH CSV;


2. Python 

Python est un langage de plus en plus en vogue dans le monde de la data, il est simple à apprendre, dispose de plus en plus de librairies spécialisées et a reçu récemment un soutient financier de près de 3 millions de dollars de la DARPA.
Il est possible avec Python de charger un fichier ligne et par ligne, d'y appliquer des traitements et de l'enregistrer ligne par ligne, la consommation en mémoire vive est alors très faible.