R: Ist es möglich, das Einlesen einer 20 Millionen plus Zeilen CSV in R parallel zu machen / zu beschleunigen?

8

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

an

Spezifikationen wie folgt:

%Vor%

Irgendwelche Gedanken / Ideen sehr geschätzt.

    
n.e.w 30.01.2012, 07:04
quelle

3 Antworten

5

Wenn Sie fread in data.table verwenden, ist möglicherweise kein paralleler Zugriff erforderlich.

%Vor%

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!

    
Richard Erickson 01.05.2015 18:57
quelle
2

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:

  • Irgendwann könnte Disk-I / O den Flaschenhals beweisen.
  • Ich hoffe, dass sich der Scan beim Öffnen mehrerer Verbindungen mit der gleichen Datei nicht beschweren wird.

Aber du könntest es versuchen und sehen, ob es deiner Geschwindigkeit einen Schub gibt.

    
Paul Hiemstra 30.01.2012 08:15
quelle
2

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?

    
John 30.01.2012 13:28
quelle

Tags und Links