Ich habe eine Datei Text aus ~ 40 Millionen Zeilen in Form eines Schlüssel/Wert, ich möchte die Werte abgerufen werden angesichts der Schlüssel innerhalb von Sekunden (2-3) max, das tue ich nicht habe genug Speicher, um sie alle im JVM-Speicher als Hashmaps zu speichern, kann ich Systemspeicher + etwas Indexierung verwenden, um das zu erreichen? Ich habe über Lucene gelesen, aber nicht sicher, ob es das ist, was ich suche.Suche großen Textdatei
Antwort
denke ich Hadoop es ist ein besseres Werkzeug für diese Aufgabe: nur die Originaldatei zwischen den Slaves aufgeteilt. Die Kartenfunktion führt eine Suche für jeden Teil der Originaldatei durch, und die Reduzierung ist die Kombination aller Ergebnisse. Wenn die Schlüssel eindeutig sind, liefert nur ein Slave die Antwort.
Lucene ist für Freitextsuche. Die schnellste Lösung, wenn Sie die Textdatei nicht verwenden müssen, wäre die Verwendung einer Datenbank. 40 Millionen Datensätze sind eine Menge, aber dennoch sollte ein einzelner Datensatz mit einem eindeutigen Index (auf dem Schlüssel) viel schneller als 2-3 Sekunden gefunden werden. Sie können eine eingebettete Datenbank wie HSQLDB verwenden, stellen Sie nur sicher, dass Sie sie für die Verwendung von Festplattenspeicher konfigurieren!
Wenn Sie die Textdatei zu halten brauchen, erstellen Sie eine TreeMap von Schlüssel in die Datei zu versetzen, wenn Sie, dass im Speicher kann es sich leisten. Klingt chaotisch.
Wenn Sie einen „Textzeichenfolge“ in dem Schlüssel oder der Wert suchen möchten Sie Apache Lucene nutzen könnten. Lucene ist eine voll ausgestattete Text-Suchmaschine Bibliothek aber Sie können es auch einfach für die Suche die genaue Übereinstimmung des Schlüssel Wert verwenden. Ich benutze Lucene mit mehr als 60 Millionen Dokumente und ich habe weniger als 1 Sekunde für jede Suche.
Andernfalls, wenn Sie wollen nur ein Schlüssel/Wert Laden Sie eine NoSQL Schlüssel/Wert-Datenbank wie Redis verwenden können, aber ich habe noch nicht versucht.
- 1. C# Suche große Textdatei
- 2. Suche von großen Eingabe
- 3. superfast Regexmatch in großen Textdatei
- 4. Zeilen aus einer großen Textdatei lesen
- 5. C# Suche in Textdatei
- 6. Eine Zeichenfolge in einer großen Textdatei abgleichen?
- 7. Hinzufügen einer großen Textdatei zum Ordner "Assets"
- 8. Ersetzen großen Schaltkasten durch Textdatei/Datenbank [Java]
- 9. Sortieren einer großen Textdatei in Python
- 10. N Zeilen einer großen Textdatei lesen
- 11. Suche Textdatei für übereinstimmende Zeichenfolge
- 12. Suche Textdatei für Wörter cont
- 13. Suche ID aus einer Textdatei
- 14. Suche nach Telefonnummer in einer großen Textfolge
- 15. Suche in großen Dateien mit ifstream
- 16. Suche nach Änderungen zwischen 2 großen Arrays
- 17. Suche Textdatei für bestimmte Benutzer eingegebene Zeichenfolge
- 18. Suche nach Werten in einer Textdatei
- 19. Suche nach Nummer in einer Textdatei?
- 20. Suche Textdatei für einen Zeitbereich - Python
- 21. Groß- und Kleinschreibung Suche in einer Textdatei
- 22. Suche nach Wort in Textdatei in Python
- 23. mIRC Suche nach mehreren Wörtern in Textdatei
- 24. Realloc in einer großen Textdatei in C zu lesen
- 25. Extrahieren große Liste von Zeilen aus großen Textdatei
- 26. Bash - Ersetzen kleiner Linien in einer großen Textdatei effizient
- 27. Wie finden Sie Steuerzeichen zum Lesen einer großen Textdatei?
- 28. So lesen Sie Teildaten aus einer großen Textdatei in C++
- 29. Verarbeitung einer sehr großen Textdatei mit faulen Texten und ByteStrings
- 30. Speichern einer großen Textdatei in Vektoren und Looping
https://docs.oracle.com/javase/tutorial/essential/io/file.html – Sedrick