Sobald die CSV-Datei über read.csv
geladen wurde, ist es relativ einfach, multicore
, segue
usw. zu verwenden, um mit den Daten in der CSV herumzuspielen. Es zu lesen, ist jedoch ziemlich die Zeit sinken.
Erkenne, dass es besser ist, mySQL usw. zu verwenden.
Nehmen Sie die Verwendung einer AWS 8xl-Clustercomputerinstanz mit R2.13
anSpezifikationen wie folgt:
%Vor%Irgendwelche Gedanken / Ideen sehr geschätzt.
Wenn Sie fread
in data.table
verwenden, ist möglicherweise kein paralleler Zugriff erforderlich.
Ein Kommentar zu diesem Frage veranschaulicht seine Macht. Auch hier ist ein Beispiel aus meiner eigenen Erfahrung:
%Vor%Ich konnte 1,04 Millionen Zeilen in weniger als 10 Sekunden lesen!
Was Sie tun könnten, ist scan
. Zwei seiner Eingabeargumente könnten sich als interessant erweisen: n
und skip
. Sie öffnen einfach zwei oder mehr Verbindungen zu der Datei und verwenden skip
und n
, um den Teil auszuwählen, den Sie aus der Datei lesen möchten. Es gibt einige Vorbehalte:
Aber du könntest es versuchen und sehen, ob es deiner Geschwindigkeit einen Schub gibt.
Flash oder konventioneller HD-Speicher? Wenn Letzteres der Fall ist, wenn Sie nicht wissen, wo sich die Datei auf den Laufwerken befindet und wie sie aufgeteilt wird, ist es sehr schwierig, die Dinge zu beschleunigen, da mehrere gleichzeitige Lesevorgänge nicht schneller sind als ein gestreamter Lesevorgang. Es liegt an der Festplatte, nicht an der CPU. Es gibt keine Möglichkeit, dies zu parallelisieren, ohne mit der Speicherebene der Datei zu beginnen.
Wenn es um Flash-Speicher geht, kann eine Lösung wie Paul Hiemstra's helfen, da ein guter Flash-Speicher eine exzellente zufällige Leseleistung, fast sequentiell, haben kann. Probieren Sie es aus ... aber wenn es Ihnen nicht hilft, warum.
Auch ... eine schnelle Speicherschnittstelle bedeutet nicht, dass die Laufwerke sie sättigen können. Haben Sie auf den Laufwerken Leistungstests durchgeführt, um zu sehen, wie schnell sie wirklich sind?
Tags und Links r csv parallel-processing bigdata