IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

Traitement d'une grande masse de données en Java


Sujet :

Langage Java

  1. #1
    Membre éclairé
    Avatar de yimson
    Homme Profil pro
    Consultant Big Data
    Inscrit en
    Janvier 2009
    Messages
    215
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant Big Data
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2009
    Messages : 215
    Points : 747
    Points
    747
    Par défaut Traitement d'une grande masse de données en Java
    Bonjour,

    Je souhaiterai avoir votre retour d'expérience sur un souci que je rencontre en ce moment. Je vais décrire ci-dessous le problème.

    Je dispose actuellement d'un fichier texte avec des données structurées qui a une taille de 3Go. Je souhaite charger tout ce fichier en mémoire pour y effectuer des traitements mathématiques de statistiques. Le véritable problème est que je ne voudrais pas charger en mémoire des morceaux de ce fichier avant d'effectuer des traitements. Je souhaite charger le fichier en entier. Mes question sont les suivantes:

    Est ce que c'est faisable déjà en Java?
    Quelles sont les collections en Java qui puissent me permettre de le faire?

    Merci par avance de votre retour.

  2. #2
    Membre éclairé Avatar de JoeChip
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    536
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 536
    Points : 803
    Points
    803
    Par défaut
    Tu n'explique pas ton souci. A priori c'est faisable en Java, avec n'importe quelle collection, d'autant que sans doute c'est plein de données numériques qui prendront moins de place en mémoire que le fichier texte. Tu as essayé quoi ? Pourquoi ça ne marchait pas ?
    Sans danger si utilisé conformément au mode d'emploi.

    (anciennement BenWillard, enfin moins anciennement que ... enfin bon c'est une longue histoire... Un genre de voyage dans le temps...)

  3. #3
    Membre éprouvé
    Inscrit en
    Mars 2006
    Messages
    848
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Mars 2006
    Messages : 848
    Points : 1 078
    Points
    1 078
    Par défaut
    Bonjour,

    cela est possible, oui, mais est-ce souhaitable? non...

    J'ai déjà eu affaire avec des calculs sur un gros volume de données. L'approche a toujours été la même: Essayer d'adapter l'algorithme de calcul pour éviter les gros chargements en mémoire. Il est souvent possible de découper le calcul pour obtenir des résultats intermédiaires et libérer une partie de la mémoire à chaque étape.

    La principale problématique était que la mémoire dispo n'était pas constante (à cause d'autres applis) et qu'il fallait éviter à tout prix le swap.
    Au final, les différents calculs étaient en plus beaucoup plus maintenables et testables que le calcul mathématique théorique d'origine.

    Mais chaque cas est différent et il n'y a pas de vérité absolue...

  4. #4
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2011
    Messages
    192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Transports

    Informations forums :
    Inscription : Février 2011
    Messages : 192
    Points : 107
    Points
    107
    Par défaut
    il faut que tu aies suffisament de RAM sur ta machine, et augmenter la memoire autorisée pour JAVA.

    mais 3Go, c'est bien trop gros pour le charger... ( à mon avis)

    Apres tout depend tes besoins, si ce sont des données texte, xml, binaire....

  5. #5
    Membre éclairé Avatar de JoeChip
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    536
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 536
    Points : 803
    Points
    803
    Par défaut
    Un fichier de 3Go c'est pas forcément 3Go de données...
    Sans danger si utilisé conformément au mode d'emploi.

    (anciennement BenWillard, enfin moins anciennement que ... enfin bon c'est une longue histoire... Un genre de voyage dans le temps...)

  6. #6
    Membre averti
    Homme Profil pro
    Dev
    Inscrit en
    Novembre 2006
    Messages
    112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev

    Informations forums :
    Inscription : Novembre 2006
    Messages : 112
    Points : 350
    Points
    350
    Par défaut
    Attention sous Windows 32 bit , on est limité à 2Go par processus !!!

  7. #7
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Citation Envoyé par miaous Voir le message
    Attention sous Windows 32 bit , on est limité à 2Go par processus !!!
    Et même carrément à ~1.2G pour la java, car java a besoin d'une mémoire contigue.

  8. #8
    Membre éclairé Avatar de JoeChip
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    536
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 536
    Points : 803
    Points
    803
    Par défaut
    De toutes façons, il semble évident qu'il n'est pas nécessaire de tout charger en mémoire pour faire les calculs ; au pire on gère soi-même une mémoire virtuelle de n'importe quelle taille.
    Sans danger si utilisé conformément au mode d'emploi.

    (anciennement BenWillard, enfin moins anciennement que ... enfin bon c'est une longue histoire... Un genre de voyage dans le temps...)

  9. #9
    Membre éclairé
    Avatar de yimson
    Homme Profil pro
    Consultant Big Data
    Inscrit en
    Janvier 2009
    Messages
    215
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant Big Data
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2009
    Messages : 215
    Points : 747
    Points
    747
    Par défaut
    Merci à vous tous pour vos contributions.
    J'en ferai bon usage. Car c'est une problématique
    qui avait été posée par un ami et j'avais souhaité avoir
    l'avis des autres afin d'éclairer cet ami,
    vu que c'est un forum d'échange et de partage.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 11
    Dernier message: 23/09/2008, 15h39
  2. [Conception] Taille d'une grande base de données
    Par caranta0013 dans le forum PHP & Base de données
    Réponses: 22
    Dernier message: 28/03/2007, 09h43
  3. Une grande quantité de données sur Oracle 8i?
    Par bliml dans le forum Oracle
    Réponses: 13
    Dernier message: 01/03/2007, 11h45
  4. Réponses: 1
    Dernier message: 10/01/2007, 15h52
  5. [Stratégie]grandes masses de données
    Par TIF16 dans le forum Langage
    Réponses: 7
    Dernier message: 07/03/2006, 16h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo