180 MB CSV-datei einlesen. Problem!

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hallo zusammen,
kann mir vielleicht jemand ein Tipp geben wie ich eine 180MB Datei am besten einlesen kann.
Sollte möglichst reibungslos gehen. Bisher dauerts über 3 Stunden ist das normal?

Mit Bufferedinputstream oder so?

Benutze die Daten dann um sie als Graphen anzuzeigen.
 
G

Guest

Gast
Code kann ich erst morgen posten, aber wie lange sollte das denn maximal dauern. 10 Minuten?
 

Illuvatar

Top Contributor
Also einfach nur einlesen sollte - von einer normalen Festplatte - höchstens eine Minute dauern. Wenn du damit noch eine Weltformel berechnen willst kann das schon ein paar Jährchen dauern (aber die Antwort ist ja eh 42...;))
 

niemand

Bekanntes Mitglied
Ich glaube, das hängt auch ein wenig von deinem Rechner ab. Auf einer Maschine mit 8MB RAM, einer 66MHz-CPU und knapp bemessenem Swap-Space kann das auch gerne einen Tag und mehr dauern.

cu
 
G

Gast

Gast
Servus, jetzt eine nähere Beschreibung meines Problems:
Habe eine csv mit 10.000.000 Werten aus einer Simulation heraus --> 180 MB grosse CSV Datei.

Meine Aufgabe ist es nun, eine Häufigkeitsverteilung aus dieser datei zu erstellen, also der Wert 0 kommt 10mal vor, der Wert 151 5mal usw....
Leider kann ich immer nur 1 Mio Werte einlesen und daraus die Häufigkeitsverteilung berechnen, weil mir sonst immer mein rechner hochgeht... (2GB RAM, AMD Duo Core).... Wie kann ich also am einfachsten aus meiner datei so ne Häufigkeitsverteilung erstellen. Aktuell bin ich noch bei 4 Minuten, jedoch habe ich zehn Häufigkeitsverteilungen von je 1Mio werte und weis nicht, wie ich das zusammen bekommen. Merce

Hier der Code:
Code:
	public /*double[][]*/ void getFrequency2 (String fileName, int loop){
		
		String row;
		double[] tempLoss;
		double[][] tempFreq;
		
		try{
			File file = new File(fileName);
			FileReader freader = new FileReader(file);
			BufferedReader reader = new BufferedReader(freader);
			
//hilfsklasse zum schreiben einer datei... mit Methode addToFile()
			FileMaster myTempFreqFileMaster = new FileMaster("C:\\Diplomarbeit/Daten/20061016/Tempfreq",true,false);
			
			for (int i = 0; i < loop; i++) {
				tempLoss = new double[1000000];
				for (int j = 0; j < tempLoss.length; j++){
					row = reader.readLine();
					//System.out.println(j);
					if (row != null){
						StringTokenizer token = new StringTokenizer(row, /*";"*/ ",");
						tempLoss[j] = Double.parseDouble(token.nextToken());
					}
					else{
						break;
					}
				}
				tempFreq = fastFreq(tempLoss);
				myTempFreqFileMaster.addToFile(tempFreq);
				System.out.println(i);
			}
		}
		catch (FileNotFoundException e) {
			System.err.println("Datei nicht gefunden" + e.getMessage());
		} catch (IOException e) {
			System.err.println("Lesefehler" + e.getMessage());
		}
	}
	
	private double[][] fastFreq (double[] tempLoss){
		int size = 1000000;
		int runner = 0;
		double[][] tempFreq = new double[size][2];
		
		quicksort(tempLoss, 0, tempLoss.length-1);
		
		tempFreq[0][0] = tempLoss[0];
		tempFreq[0][1] = 1;
		
		for(int i = 1; i < tempLoss.length; i++){
			//System.out.println(runner);
			if(tempFreq[runner][0] == tempLoss[i]){
				tempFreq[runner][1]++;
			}
			else{
				if(size < runner-1){
					size = 2*size;
					double[][] tempFreq2 = new double[size][2];
					for(int j = 0; j <= runner; j++){
						tempFreq2 [j][0] = tempFreq [j][0];
						tempFreq2 [j][1] = tempFreq [j][1];
					}
					tempFreq = tempFreq2;
					tempFreq2 = null;
				}
				runner++;
				tempFreq[runner][0] = tempLoss[i];
				tempFreq[runner][1] = 1;
			}
		}
		return tempFreq;
		
	}
 

Wildcard

Top Contributor
Mach dir doch einen Wrapper um eine Hashmap die bei put nur ein Argument bekommt und dann den entsprechenden value in der echten Hashmap um 1 erhöht. Dann kannst du die Verteilung on the fly für einen beliebig großen Wertebereich vornehmen.
 
G

Guest

Gast
Super Tipp mit der Hashmap!

Hashmap schaut jetzt so aus
Code:
import java.util.HashMap;
import java.util.Iterator;

public class DoubleListe extends HashMap {

   private static final long serialVersionUID = 1L;

   public DoubleListe () {
       super();
   }

   public void setzeDoubleKeyInDieListe(Double value) {
       // falls der Double bereits in der Hashmap, dann Anzahl + 1
       if (containsKey(value))
           put(value, new Integer(((Integer) get(value)).intValue() + 1));
       // ansonsten neuen Eintrag hinzufügen
       else
           put(value, new Integer(1));
   }

   public Double[] getAlleDoubleKeys() {
       Iterator i = keySet().iterator();
       Double[] doubleArray = new Double[keySet().size()];
       int j = 0;
       while (i.hasNext()) {
           doubleArray[j] = (Double) i.next();
           j++;
       }
       return doubleArray;
   }

   public int wieOftKommtDerDoubleKeyVor(Double value) {
       Object o = get(value);
       if (o == null)
           return 0;
       else
           return ((Integer) o).intValue();
   }
}

Gracias
 
G

Gast

Gast
Servus wildcard und alle anderen zusammen,
jetzt habe ich aber noch ein anderes Problem. Hashmap funktioniert super genial, nur brauche ich jetzt noch eine sortierte liste ;-)
soll heissen aktuell bekomme ich ja raus Wert 100 1mal Wert 65 5mal Wert 120 3mal

Ich bräuchte aber für berechnungen und dateiausgaben
Wert 65 5mal
Wert 100 1mal
Wert 120 3mal
usw.

vielen dank im voraus - gracias
 
G

Gast

Gast
Dumme Frage hinterher, kann man Double vergleichen? Ich hätte da nämlich einen schönen QUicksort geschrieben, aber irgendwie mag der meine Double nicht und es sprengt ihn wieder bei folgender Situation:
Die Werte selbst sind sehr feingranular, heisst 100,00 ist nicht 100,01.
Somit kann es sein, dass 10KK Werte auch in der Häufigkeitstabelle mit 10KK unterschiedlichen Werten auskommt.
Wenn ich mir diese mit public Double[] getAlleDoubleKeys() hole in ein Double[] --> Memory out...
Merci für die Unterstützung
 
G

Gast

Gast
Servus, vielen Dank. Funktioniert so weit echt spitze....
Aber ich habe ein weiteres Problem:
Eine weitere CSV Datei enthält auch 10.000.000 Werte. Wie kann ich diese sortieren, da die meisten der Werte unterschiedlich sind und sich mit einer Häufigkeitstabelle wie oben erstellt nicht bearbeiten lassen?!?! Vielen Dank für die Hilfe und Unterstützung!!!
 
G

Gast

Gast
Juhu ich habs ;-) einfach den mitgegeben speicher erhöhen!!!! Vielen Dank für die Hilfe!!!
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Problem beim Einlesen von byte-werten aus datei Allgemeine Java-Themen 2
B Problem bei Datei einlesen (Applet) Allgemeine Java-Themen 4
S Bookmark HTML Datei einlesen, alle Links erhalten und manche editieren..? (aktuell JSoup) Allgemeine Java-Themen 4
Master3000 Java Datei mehrmals einlesen Allgemeine Java-Themen 4
R Sonderzeichen aus Datei einlesen und in Datei ausgeben. Allgemeine Java-Themen 17
F Datei in String-Array einlesen Allgemeine Java-Themen 8
N Datei Zeilenweise Einlesen, Versteckte Zeichen Allgemeine Java-Themen 5
R .txt Datei einlesen und auf der Konsole ausgeben lassen Allgemeine Java-Themen 11
K Datei (CSV-ähnlich) in Java einlesen & mit teil der Daten Graphen erstellen Allgemeine Java-Themen 9
J Input/Output Word Datei einlesen, verarbeiten und abspeichern Allgemeine Java-Themen 3
J Java 8 Datei einlesen Allgemeine Java-Themen 1
K Input/Output String aus einer Datei einlesen und in anderer Datei speichern Allgemeine Java-Themen 20
R Datei einlesen mit Win7 Allgemeine Java-Themen 8
F Datei einlesen funktioniert nicht Allgemeine Java-Themen 3
J BufferedReader Datei einlesen Allgemeine Java-Themen 8
J Jar Datei mit anderer .jar einlesen Allgemeine Java-Themen 4
J Best Practice Java 8 Datei einlesen und verarbeiten Allgemeine Java-Themen 2
T xls-Datei per Apache Commons CsvParser einlesen UTF-8 Zeichen russische Zeichen Allgemeine Java-Themen 2
D Wörter aus Datei einlesen Allgemeine Java-Themen 9
Ananaskirsche Input/Output Zeile aus Datei einlesen Allgemeine Java-Themen 10
H Excel Datei einlesen mit Apache POI Allgemeine Java-Themen 1
P Input/Output Datei einlesen per Scanner(f) - mit Cron gehts nicht Allgemeine Java-Themen 1
AssELAss XML Datei einlesen und anschließen formatiert ausgeben in Datei Allgemeine Java-Themen 0
L Input/Output Datei einlesen und Inhalt in Array schreiben Allgemeine Java-Themen 3
M Parameter-Datei einlesen (zeilenweise); Dateiintegrität Allgemeine Java-Themen 7
I Input/Output .csv Datei einlesen Allgemeine Java-Themen 4
S Datei in File-Objekt mit UTF-8 einlesen Allgemeine Java-Themen 2
K JAVA Datei einlesen Allgemeine Java-Themen 2
F JavaMail - Lokale eMail-Datei einlesen und parsen? Allgemeine Java-Themen 9
Q Text Datei einlesen Allgemeine Java-Themen 27
M Einlesen einer Datei in Java Allgemeine Java-Themen 3
D class Datei einlesen Allgemeine Java-Themen 4
A Datei als Object einlesen und das Object als Singleton instance setzen. Allgemeine Java-Themen 13
C Datei als ASCII text einlesen ? Allgemeine Java-Themen 16
D Shortcut statt Datei einlesen Allgemeine Java-Themen 2
B Applet .java Datei einlesen, anzeigen Allgemeine Java-Themen 3
S Daten in Array als INT-Wert einlesen - jetzt als csv Datei Allgemeine Java-Themen 5
J Große Datei einlesen und gestückelt verarbeiten Allgemeine Java-Themen 4
Y Property Datei einlesen Allgemeine Java-Themen 2
FoolMoon Datei zeilenweise einlesen, aber nicht die erste Zeile! Allgemeine Java-Themen 3
J Mit Scanner-Klasse eine Datei zeilenweise einlesen und nur bestimmte Zeichen abfragen Allgemeine Java-Themen 11
G Datei einlesen: Umlaute sind Fragezeichen Allgemeine Java-Themen 23
G HTML-Datei einlesen, Plain Text in Textfile speichern Allgemeine Java-Themen 4
Y Excel datei einlesen und inhalt verarbeiten Allgemeine Java-Themen 8
H Mit Log4j erzeugte Datei einlesen Allgemeine Java-Themen 2
data89 Datei aus ausführbarer Jar einlesen Allgemeine Java-Themen 2
Noar Datei einlesen, bearbeiten, ausgeben Allgemeine Java-Themen 5
H Datei (zeilenweise) einlesen Allgemeine Java-Themen 3
D Datei im DOS/ASCII-Format einlesen. Allgemeine Java-Themen 9
D binäre Datei einlesen und schreiben? Allgemeine Java-Themen 3
J Text einer .csv Datei einlesen und Zeile in NEUE Zeile hänge Allgemeine Java-Themen 1
H2SO3- csv Datei mit unterschiedlichen Formatierungen einlesen Allgemeine Java-Themen 15
F Double mit Streams aus Datei einlesen Allgemeine Java-Themen 3
A Ini Datei einlesen Allgemeine Java-Themen 5
MQue Datei einlesen Allgemeine Java-Themen 10
K Datei als HEX oder dezimal gem. ASCII einlesen Allgemeine Java-Themen 4
MQue Datei einlesen/auslesen Allgemeine Java-Themen 4
T (Binary)Datei einlesen, Inhalt ändern, Datei schreiben Allgemeine Java-Themen 4
G Datei einlesen und in HashMap verarbeiten Allgemeine Java-Themen 3
G Einlesen von Parameterwerten aus einer txt-Datei Allgemeine Java-Themen 2
pikay TXT-Datei in 2-Dimensionales Array Einlesen Allgemeine Java-Themen 8
J XML-Datei byteweise einlesen und Kodierung auslesen Allgemeine Java-Themen 4
spacegaier Performanceproblem beim Einlesen aus Datei mittels Threads Allgemeine Java-Themen 23
P IOException beim einlesen einer XML- Datei Allgemeine Java-Themen 8
M bei Klick auf Button Datei einlesen Allgemeine Java-Themen 3
S große Datei einlesen! Allgemeine Java-Themen 7
P XML- Datei einlesen Allgemeine Java-Themen 11
E Datei rückwärts einlesen Allgemeine Java-Themen 5
L Frage zu java.util.regex und Einlesen einer Datei Allgemeine Java-Themen 2
D CSV Datei einlesen Allgemeine Java-Themen 17
T iso datei (Image) mit Java einlesen und Inhalt entpacken Allgemeine Java-Themen 3
R Datei einlesen, Strings hinzufügen, abspeichern Allgemeine Java-Themen 4
K .ini Datei einlesen? Allgemeine Java-Themen 6
G outOfMemoryError beim Einlesen einer Datei abfangen? Allgemeine Java-Themen 13
flashfactor Komischer Fehler beim Einlesen einer Datei. Allgemeine Java-Themen 2
K .wav Datei einlesen Allgemeine Java-Themen 2
T Tastatureingabe in Datei einlesen Allgemeine Java-Themen 5
S Datei endlos einlesen (am Dateiende warten) Allgemeine Java-Themen 3
P Probleme beim Einlesen einer TXT/CSV-Datei aus einem JAR Allgemeine Java-Themen 7
M Datei in String einlesen Allgemeine Java-Themen 3
F NullpointerException beim Einlesen einer Datei Allgemeine Java-Themen 13
C Datei vollständig einlesen Allgemeine Java-Themen 3
D Bilder einlesen, bearbeiten und wieder in Datei schreiben Allgemeine Java-Themen 3
O Mit jsoup Text aus HTML-Datei rausgrabben Allgemeine Java-Themen 29
Zrebna Aus einer jar-Datei eine exe-Datei erzeugen lassen Allgemeine Java-Themen 37
kodela StatusBar-Anzeigen auch in Log-Datei ausgeben Allgemeine Java-Themen 3
G Maven Projekt JAR-Datei Allgemeine Java-Themen 6
E XML - Datei Darstellung in IntelliJ als Baum Allgemeine Java-Themen 2
Thomasneuling Java Jar datei erstellen, von Projekt, dass auch Javafx Dateien, FXML Dateien und CSS Dateien, sowie Bilder enthält? Allgemeine Java-Themen 14
D Erste Schritte Mp3 Datei kann nicht von der Festplatte geöffnet werden - mit ChatGPT erstellt Allgemeine Java-Themen 7
J Filenotfoundexception obwohl Datei existiert Allgemeine Java-Themen 6
MJannek Java Überprüfen ob .exe-Datei bereits ausgeführt wird Allgemeine Java-Themen 2
S .exe Datei/Programm auslesen? Allgemeine Java-Themen 2
E Datei verschoben Event Allgemeine Java-Themen 3
D Datei mit "Kohsuke GitHub API" in Repository hochladen Allgemeine Java-Themen 2
melaniemueller Einzelne Zeile aus einer txt Datei in einem String speichern Allgemeine Java-Themen 12
G JavaFX Maven Projekt als .exe Datei exportieren Allgemeine Java-Themen 10
J (Geplante) Änderungen an einer Datei vorübergehend speichern und anwenden? Allgemeine Java-Themen 12
Neumi5694 Datei komprimiert Allgemeine Java-Themen 6
G Obfuscate einer .jar-Datei mit ProGuard? Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben