Schnelles arbeiten mit großen CSV Dateien

Siassei

Bekanntes Mitglied
Hallo,

auf einem Prüfstand entstehen sehr große CSV Dateien mit mehreren hundert Spalten und noch mehr Zeilen. Die Dateigröße schwankt zwischen 300 GB und 2 TB.
Die beinhalteten Dateien verarbeite ich weiter. z.B. statistische Auswertung, "Ausgleichsgeraden" bzw. mehrdimensionale Flächen.

Leider ist meine Erfahrung in Java mit derart große Dateien begrenzt. Daher suche ich zur Zeit eine Möglichkeit, die Daten möglichst "schnell" einzulesen. Mein ersten Gedanken waren
1.) Ich erstelle ein Register, in dem ich mir die Positionen (Offsets) für die Zeilen und Spalten merke. Danach greife ich einfach an der i-ten Zeile und j-ten Spalte den Wert ab.
2.) Ich schreibe alle Daten in eine DB z.B. H2 und arbeite mit dieser weiter.

In wie weit liege ich damit richtig?
Zu 2.)
Wie arbeite ich mit einer DB bei der mathematischen Auswertung zusammen?
z.B. bei der Erstellung einer 2D Fläche (Anpassung mit Ansatzfunktion)

Gruß, Thomas
 

kama

Top Contributor
Hi,

also solche Größenordnungen hören sich eher nach einem kleinen Hadoop Cluster mit Map/Reduce an....

Ich würde vermuten, dass Du damit DB's gegen die Wand läufst...(300 GB ist schon sehr groß geschweige 2 TB) ...Die Frage ist auch wie lange das brauchst um in die DB zu wandern....

CSV ist ja zeilenorientiert und somit sollte zumindest das Lesen kein Problem sein....

Eventuell wäre hier sogar noch eher an Hive zu denken...das ist das Ganze SQL-Like ist....

Die Frage ist ob man die Mathematischen Themen in Map/Reduce abgebildet bekommt....(Eventuelle mit Hive?)

Die Frage ist auch welche Geschwindigkeiten Du Dir vorstellst und wieviel Zeit Du zur Auswertung hast ? Must Du eventuell die Auswertung unterschiedlich machen?

Gruß
Karl Heinz Marbaise
 
Zuletzt bearbeitet:

kama

Top Contributor
Hi,
1.) Ich erstelle ein Register, in dem ich mir die Positionen (Offsets) für die Zeilen und Spalten merke. Danach greife ich einfach an der i-ten Zeile und j-ten Spalte den Wert ab.
Was aber bedeutet, dass Du die Daten vollständige lesen musst...damit Du solch einen Index erstellen kannst....

EDIT: So dann hast Du einen Index...aber um die Daten dann zu verarbeiten musst Du nochmal durch die Daten und durch den Index ? Hm...? Wird sehr langsam....bei der Menge...

Gruß
Karl Heinz Marbaise
 

Wildcard

Top Contributor
Die Frage ist auch was mit den Daten passieren muss.
Musst du nur einmal durchlaufen um irgendwelche Werte zu berechnen, oder musst du auf bestimmte Datensätze zugreifen?
Wenn du nur einmal durchlaufen musst ist der einfachste Weg Chunk für Chunk zB mit einem ByteBuffer durchzugehen und die Daten zu verarbeiten. Wenn aber auf einzelne Datensätze gezielt zugreifen musst währe ein Index aus dem du die Offsets und Längen auslesen kannst wohl wirklich geschickter. In dem Fall dann zB mit einem NIO Filechannel direkt den richtigen Chunk der Datei in den Speicher mappen und dann verarbeiten.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
R Schnelles Einfügen in SortedSet Allgemeine Java-Themen 11
V Schnelles Refactoring Allgemeine Java-Themen 3
P Schnelles Auslesen von Strings für Syntaxhighlighting? Allgemeine Java-Themen 2
A Schnelles laden von Bildern Allgemeine Java-Themen 3
O Lernen im Team zu arbeiten - Projekte zusammen umsetzen Allgemeine Java-Themen 23
D Arbeiten mit einem Bitarray Allgemeine Java-Themen 13
D Mit Generics arbeiten - Übungsaufgabe Allgemeine Java-Themen 3
E mit extrem langen Zahlen (als Zeichneketten) arbeiten Allgemeine Java-Themen 4
F Input/Output Arbeiten mit dem JFileChooser Allgemeine Java-Themen 4
antonbracke Aus Jar eine Class laden und damit arbeiten! Allgemeine Java-Themen 5
P [Thread] Scheint nicht Sequenziell zu Arbeiten Allgemeine Java-Themen 9
P Eclipse Gemeinsam mit NetBeans an einem Projekt arbeiten? Allgemeine Java-Themen 3
G Wie kann man sehen, welche Applikationen mit java arbeiten? Allgemeine Java-Themen 17
nrg Arbeiten mit sehr großen CSV Dateien Allgemeine Java-Themen 20
J Mit mehrdimensionalen Integer-Arrays arbeiten Allgemeine Java-Themen 17
J Arbeiten mit Punkten in einem JPanel Allgemeine Java-Themen 3
V Java-Programm nur "mit halber Kraft" arbeiten lass Allgemeine Java-Themen 11
J Methode nur max 1sec arbeiten lassen Allgemeine Java-Themen 2
C Strings zu groß um damit zu arbeiten Allgemeine Java-Themen 31
M Wie bekomme ich Threadsdazu parallel zu arbeiten? Allgemeine Java-Themen 13
B Arbeiten mit Dateien Allgemeine Java-Themen 2
D Fehlerhafte Thread Verwendung beim arbeiten mit Sockets Allgemeine Java-Themen 6
W Mit Date-Objekten arbeiten Allgemeine Java-Themen 10
M Mit Textdateien arbeiten Allgemeine Java-Themen 5
B Sehr großen Graph mit Verbindungen bauen und minimieren? Allgemeine Java-Themen 35
N Bin to Dez und umgekehrt mit sehr großen Zahlen Allgemeine Java-Themen 2
T Modulo-Operator versagt bei zu großen Zahlen? Allgemeine Java-Themen 14
H Gibt es einen großen Unterschied zwischen Java 6 und Java 7? Allgemeine Java-Themen 3
R Panel mit 8 gleich großen "fenstern" Allgemeine Java-Themen 11
M Eclipse Stackoverflow beim Einlesen von großen Bilder in kd Baum Allgemeine Java-Themen 15
K replaceAll bei sehr großen String Allgemeine Java-Themen 3
H2SO3- großen double in string mit e umwandeln Allgemeine Java-Themen 4
kb22 CMS mit großen Dateien (heap problem) Allgemeine Java-Themen 3
H2SO3- speichern von Daten in seeeeeehr großen Tabellen (nicht DB) Allgemeine Java-Themen 8
G Bringt es etwas System.gc() nach großen Aufgaben aufzurufen? Allgemeine Java-Themen 2
T Suche den großen Calendar Thread ! Allgemeine Java-Themen 2
U Kompilieren einer großen Datei if-else = StackOverflowError Allgemeine Java-Themen 4
G Lesen von sehr großen dateien Allgemeine Java-Themen 8
S Datenbank Abfragen mit großen Datenmengen Allgemeine Java-Themen 22
E String.replace für (sehr) großen Text Allgemeine Java-Themen 9
M String#equals(), Probleme mit großen Strings? Allgemeine Java-Themen 4
F Mehrere Bilder zu einem Großen zusammenkleben Allgemeine Java-Themen 3
R Was nehmen für Flußdiagramme und Druck von großen Grafiken Allgemeine Java-Themen 4
W JTextArea beschleunigen bei großen Texten Allgemeine Java-Themen 4
flashfactor Problem mit mehren großen Dateien Allgemeine Java-Themen 3

Ähnliche Java Themen

Neue Themen


Oben