11 GB File lesen ohne zu extrahieren Filedaten Bereich für Bereich adressieren dann mit Multi-Thread id die DB importieren

Raed

Mitglied
Hallo Liebe Leute,
ich bitte euch hier um Hilfe bzw bitte um einen Vorschlag ich habe ein .bz2 File 11 GB groß ich lese das File ohne zu extrahieren mit
Apache commons-compress-1.23.0 es lief alles gut bis ich bestimmte Zeilen vom bz2 File auf Threads verteilen möchte damit ich mit
Multi-Threading der Inhlat des Files in die DB importiere wie ich recherchiert habe (s.Code) man bekommt zum Schluß ein Object vom Type
BufferedReader dort kann man die Methoden ReadLine(); liest man vom File eine Zeile dann bestimmt man die Länge der Zeile (der gelesene String)
summiert man die Länge von z.B 10 Zeilen dann die Summe als Position (Parameter) der Methoden mark(position); liefert dann mit reset(); soll die
Stelle bestimmt werden, wo der Thread anfängt das File zu lesen.

Das Problem:
des Lesen vom .bz2 File läuft ohne Problem aber die Methoden mark(position); und reset() setzen die Position im .bz2 File nicht also wird immer
die erste Ziele gelsen obwohl ich die mark(position); dann reset(); Methoden aufrufe ?

Hat jemand einen Vorschlag gibt es auch andere Metode in Java, mit der kann man das File lesen (ohne zu extrahieren und dann die Stellen im File auf Threads verteilen damit der Inhalt in die DB importiert wird ?

Danke euch 🌹

Apache commons-compress-1.23.0: https://commons.apache.org/proper/commons-compress/download_compress.cgi
Das .zb2 File unter https://enamine.net/compound-collections/real-compounds/real-database (REAL database, HAC 6-21 420M compounds, CXSMILES )

Code:
public static BufferedReader getBufferedReaderForCompressedFile(String filePathWithName) throws FileNotFoundException, CompressorException {
        FileInputStream fin = new FileInputStream(filePathWithName);
        BufferedInputStream bis = new BufferedInputStream(fin);
        CompressorInputStream input = new CompressorStreamFactory().createCompressorInputStream(bis);
        BufferedReader br = new BufferedReader(new InputStreamReader(input));
        String line = "Empty";
        int counter = 0;
        try {
            while ((line = br.readLine()) != null && counter < 10) {
                counter ++;
                line = br.readLine();
                System.out.println(counter+"   "+line+"   row.length     "+line.length());
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        return br;
    }
 

KonradN

Super-Moderator
Mitarbeiter
des Lesen vom .bz2 File läuft ohne Problem aber die Methoden mark(position); und reset() setzen die Position im .bz2 File nicht also wird immer
die erste Ziele gelsen obwohl ich die mark(position); dann reset(); Methoden aufrufe ?
Hast Du denn mal geprüft, ob mark überhaupt unterstützt wird?

InputStream (Java Platform SE 8 ) (oracle.com)

Evtl. nutzt du mark / reset obwohl es nicht unterstützt wird vom verwendeten Stream.

Aber ich habe auch nicht genau verstanden, was Du versuchst. Nutzt Du mark / reset auf mehreren Threads oder Readern? Das klingt auch schon etwas dubios.

Ich würde mit nur einem Thread die Datei lesen und die gelesenen Datensätze können dann auf mehreren Thread aufgeteilt verarbeitet werden.
Aber wenn es um einen Datenbank Import geht, dann ist hier auch die Frage, was das für eine Datenbank genau ist. Viele Datenbanken bieten Bulk Import Funktionen und wenn es um den Import von vielen Daten geht, dann ist das ggf. ein deutlich besserer Weg, Das müsste man sich aber im Detail ansehen.

11GB hört sich erst einmal noch unkritisch an, aber bei großen Datenmengen macht es ggf. auch Sinn, sich zu überlegen, wie man das optimieren kann. Man kann da einiges machen wie Prüfungen vor dem Import deaktivieren, Daten ungeprüft einfügen und dann im Nachgang die Prüfungen durchführen lassen / wieder zu aktivieren. Aber da ist halt die Frage, ob sowas interessant wird. Da geht es halt um Fragen wie:
  • Was für Datenmengen liegen vor bzw. um was für Zeiten geht es beim regulären import?
  • Ist die Datenqualität ok?
  • Was sind die zeitlichen Vorgaben? Was muss eingehalten werden?
  • Geht es um einen ersten Import oder gibt es bereits Daten?
  • ...

Das ist halt ein umfangreiches Thema nur eben sind die Vorgaben / das eigentliche Problem für uns unbekannt. Daher nur der allgemeine Hinweis.
 

Raed

Mitglied
Hallo Konrad,

ich danke dir für dein Feedback habe die Methode boolean markSupported(); auf BufferedReader aufgerufen das Ergebnis war true aber
denke Apache API wird mit Java Lib. vielleicht Streß verursachen daher geht nicht bin mir aber nicht sicher ?

Habe auch überlegt ob ein Thread liest und neue Threads für Import in die DB startet ob eine bessere Möglichkeit/Idee gibt daher frage ich.

Informiere mich über Bulk Import danke für den Vorschlag.

ich habe mariaDB dazu es sind 12 .bz2 Files ich teste nur mit einem erst, man soll die CPU's optimal beschäftigen ca. 20 bzw mehr.
Man kann aber optimieren bis man die beste Leistung durch Messung/Testen bekommt.

Die Datenqualität ist OK die Daten sind sauber später kann man auch noch prüfen bzw Algorithmus für die Prüfung entwickeln da ich momentan
beim zerlegen eines .bz2 File beschäftigt bin, alles anderse kommt in Zukunft bzw später. Es geht um ersten Import.

Ich danke dir ganz herzlich Lieber Konrad falls du Kommentar hast immer wilkommen.

Grüße,

Raed
 

Raed

Mitglied
Für alle die gleiche Frage haben ich habe bei Chatgpt mich schlauer gemacht und die folgende Frage gestellt :

ich möchte auf .bz2 Datei die Zeilen bestimmen, die ich lesen möchte dann die Zeilen auf Threads verteilen geht das ohne bz2 auszupacken ?

Die Antwort war :
Es tut mir leid, aber das ist nicht möglich, ohne die BZ2-Datei zu entpacken.
BZ2-Dateien sind im Blockformat komprimiert, was bedeutet, dass sie in zusammenhängende Blöcke aufgeteilt sind. Jeder Block hängt von den vorherigen Blöcken ab, um korrekt dekomprimiert zu werden. Daher ist ein sequenzieller Zugriff erforderlich, um die Daten zu lesen.
Um auf bestimmte Zeilen in einer BZ2-Datei zuzugreifen und sie auf Threads zu verteilen, müssten Sie die Datei entpacken, um die Zeilen korrekt zu lesen und aufzuteilen. Andernfalls besteht keine Möglichkeit, den Inhalt der Zeilen genau zu bestimmen und sie auf Threads zu verteilen, ohne die BZ2-Komprimierung zu berücksichtigen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S File lesen und schreiben Java 6 Allgemeine Java-Themen 2
J File in Package erstellen & lesen mit Programmstart in externe Projekt Allgemeine Java-Themen 3
A File lesen Codierung Charset Allgemeine Java-Themen 5
L CSV File lesen, in ArrayList speichern und ausgeben Allgemeine Java-Themen 3
C Property-File lesen und schreiben Allgemeine Java-Themen 20
N Problem beim lesen einer File in JAR-File Allgemeine Java-Themen 3
reibi Sicher ein File lesen Allgemeine Java-Themen 28
U Java file aus Classpath lesen Allgemeine Java-Themen 1
G externe Properties datei aus Jar File heraus lesen Allgemeine Java-Themen 12
B txt.-File von Server lesen Allgemeine Java-Themen 6
G Datei in JAR-File lesen Allgemeine Java-Themen 3
R html-file aus jar-file lesen Allgemeine Java-Themen 10
W Jar-File Start nur über Terminal Allgemeine Java-Themen 13
D Read JSON File Problem Allgemeine Java-Themen 9
S Umstellung von File auf Path - Probleme mit Stream Allgemeine Java-Themen 5
C jar File mehrfach aufrufen (als Windows Dienst) Allgemeine Java-Themen 5
N File Path mit Variablen angeben Allgemeine Java-Themen 1
izoards Zugriff auf gemeinsame Ressource (CSV-File) Allgemeine Java-Themen 3
S Class File Editor -> Source not found Allgemeine Java-Themen 4
F jar File ausführen Allgemeine Java-Themen 14
M File Binary Representation Allgemeine Java-Themen 1
N jar File auf Mac mit Doppelklick starten Allgemeine Java-Themen 5
O Input/Output java.io.File beenden Allgemeine Java-Themen 5
G File not found - nach dem Kompilieren Allgemeine Java-Themen 6
T Jar File zu exe... Allgemeine Java-Themen 3
M Foreign Memory API / Memory-Mapped File Allgemeine Java-Themen 0
R Delete files before creating new from temp using Java file method Allgemeine Java-Themen 1
T String-Manipulation beim Ablauf in Eclipse und als JAR-File Allgemeine Java-Themen 8
F Input/Output FileNotFoundException, obwohl File existiert Allgemeine Java-Themen 5
G Excel File öffnen, in Zelle schreiben, abspeichern Allgemeine Java-Themen 6
L JAR-File auf Ilias (LMS) laufen lassen Allgemeine Java-Themen 0
ralfb1105 Classpath Directory fuer Properties File Allgemeine Java-Themen 2
L File beim Kopieren in einen anderen Ordner umbenennen Allgemeine Java-Themen 6
I File ausführen und mein Programm bearbeiten lassen Allgemeine Java-Themen 11
J .java-Dateitext Compile zur Laufzeit ohne File Allgemeine Java-Themen 15
M Key-File im selben Ordner speichern? Allgemeine Java-Themen 18
I TrueZip add file to archive Allgemeine Java-Themen 10
T Probleme mit dem Pfad zum Propertie file Allgemeine Java-Themen 7
J ftp - delete file ohne appache Allgemeine Java-Themen 8
X Klassen File-Klasse wird als Directory markiert Allgemeine Java-Themen 8
T ImageIO.read -> Can`t read input file Allgemeine Java-Themen 11
L Applet Problem "security: Trusted libraries list file not found" ? Allgemeine Java-Themen 7
C Swing File[] als klickbare links in irgendeinem Swing Element Allgemeine Java-Themen 3
H Kennt sich jemand mit Eclipse und dem Thema Jar-File aus ? Allgemeine Java-Themen 6
H Laden einer (Resourcendatei) aus einem Jar-File Allgemeine Java-Themen 17
C Authentifizierung mit java.nio.file? Allgemeine Java-Themen 5
M xlsx File auslesen Exception occured Allgemeine Java-Themen 13
offi Drag and Drop mehrerer File aus Explorer in JTable Allgemeine Java-Themen 1
G Java/LibGDX File Loading Exception Allgemeine Java-Themen 2
Cromewell JavaFX FXML-File lädt unter Ubuntu nicht Allgemeine Java-Themen 7
D Java Anwendung mit dll File Allgemeine Java-Themen 5
AssELAss Log4j Logging Ausgabe für jede Klasse in seperates File Allgemeine Java-Themen 2
thet1983 Input/Output read properties file from classpath Allgemeine Java-Themen 3
J Umwandeln von URL zu File und danach kopieren geht nicht Allgemeine Java-Themen 1
J Properties file ändern Allgemeine Java-Themen 12
S Executable Jar File startet nicht unter Windows 10 Allgemeine Java-Themen 3
B Objekte anhand von Properties file Allgemeine Java-Themen 41
Dechasa Input/Output Write into File Allgemeine Java-Themen 2
N Maven ObjectMapper Error wenn das File gespeichert wird Allgemeine Java-Themen 0
H Security Manager (IIOException: Can't read input file!) Allgemeine Java-Themen 2
H File.listFiles() funktioniert nicht... Allgemeine Java-Themen 10
C Input/Output Problem bei Datei verschiebung mit File.move und Paths.get() Allgemeine Java-Themen 26
X Zeile unter einer bestimmen Zeile hinzufügen(File) Allgemeine Java-Themen 1
F Open source file übersetzen Phython -> Java Allgemeine Java-Themen 4
C file.delete() funktioniert bei zweiten aufruf nicht mehr Allgemeine Java-Themen 3
M Desktop jar File icon Ändern? Allgemeine Java-Themen 14
O Sax-Parser ließt XML-File doppelt Allgemeine Java-Themen 1
J Java Software Compare Files und Neue File erstellen Allgemeine Java-Themen 0
Thallius Custom File Chooser Allgemeine Java-Themen 1
C .jar File lässt sich nur über Konsole öffnen Allgemeine Java-Themen 1
J Java Download Filedownload File.getFileName Allgemeine Java-Themen 3
R Java .class-File-Konstrunkt mit Programm visualisieren Allgemeine Java-Themen 18
G SecurityManager/Policy-File/Reflection Allgemeine Java-Themen 0
M pdf File bzw. ausgefüllte pdf Formulare drucken Allgemeine Java-Themen 2
S Input/Output File Not Found FileReader Allgemeine Java-Themen 6
Thallius Serialisiertes File kann auf anderem Rechner nicht geladen werden Allgemeine Java-Themen 12
P Java Dynamic Web Project -> config File Allgemeine Java-Themen 1
S runnable jar file in Verbindung mit itext Allgemeine Java-Themen 3
D Variablen java.io.File zum vergleichen abspeichern Allgemeine Java-Themen 1
M File IO Klasse ... wie einbinden Allgemeine Java-Themen 6
O Freies Tool zum Jar-File obfuscaten gesucht! Allgemeine Java-Themen 5
F File.listFiles ohne .sort Allgemeine Java-Themen 6
B XML File JAXB Allgemeine Java-Themen 0
S Platzverbrauch, File oder String Allgemeine Java-Themen 14
J Runnable jar-File: Fehlermeldung Allgemeine Java-Themen 2
P Kurze Frage: aus einer File die Zeilenanzahl auslesen Allgemeine Java-Themen 9
K Gepacktes Jar-File gibt beim Doppelklick eine Exception aus Allgemeine Java-Themen 4
P java.nio.file unter Java 6 verwenden Allgemeine Java-Themen 4
A TXT File einlesen unterschiedliche Zeilenlänge Allgemeine Java-Themen 9
B Finde letztes veränderte File Allgemeine Java-Themen 4
E Zip-File entpacken: unterschiedlicher Zeitaufwand bei unterschiedlicher Puffergröße Allgemeine Java-Themen 2
Guybrush Threepwood File.canWrite() und UAC Allgemeine Java-Themen 7
N Input/Output Mit Windows 7 erzeugtes zip-File in Java 7 öffnen Allgemeine Java-Themen 5
B Garbage Collection Logfile: Binary File Allgemeine Java-Themen 2
H XML-File mit Java erzeugt Frage Allgemeine Java-Themen 10
V C-Header Datei aus .java File herstellen Allgemeine Java-Themen 10
D File mit Inhalt kopieren und dieses File dann neu erstellen ? Allgemeine Java-Themen 4
T @NotBlank verwendet nicht message aus .property-File Allgemeine Java-Themen 4
G Jar-File soll eignen *.jar Namen ausgeben Allgemeine Java-Themen 10
S Jar-File startet nicht über doppelklick Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben