2016-07-01 13 views
0

Ich habe einen Datenrahmen mit 500 Millionen Einträge und einige sind doppelt vorhanden. Der Server kann den Datenrahmen problemlos im Speicher halten, aber alle Versuche, die Funktion unique() anzuwenden, enden mit dem Einfrieren des Servers.Eindeutige Einträge für riesige Datenrahmen erhalten

Der Datenrahmen hat dieses Format:

"id_A","id_B_C" 
"1068095976599746","137459917707_10151666538852708" 
"964549956973805","137459917707_10151666538852708" 
"10154089033126355","137459917707_10151666538852708" 
"548826058653873","137459917707_10151666538852708" 
"1048575401891319","137459917707_10151666538852708" 
"10209663598697145","137459917707_10151666538852708" 
"10209718419385277","137459917707_10151666538852708" 

Die Einträge (jede Zeile) keine eindeutige ID, also die Vereinigung von ID_A und id_B_C für einen eindeutigen Eintrag ID machen. Ich weiß, dass ich die einzigartige Funktion anwenden könnte, indem ich den Datenrahmen auf Grundlage von id_A oder id_B_C aufspalte, aber die Zahl der eindeutigen IDs immer noch um die 100 Million für jedes ist.

Gibt es eine bessere Möglichkeit, die doppelten Einträge zu entfernen?

+1

Haben Sie einen Datenrahmen oder eine Matrix? – akrun

+0

Sie sollten wahrscheinlich 'data.table' oder etwas anderes als ein data.frame verwenden. Könnten Sie auch klarstellen, was Sie mit "Ich könnte die einzigartige Funktion durch Aufteilen des Datenrahmens basierend auf id_A oder id_B_C, aber die Anzahl der eindeutigen IDs ist immer noch um die 100 Millionen für jeden."? Sie meinen nicht, * diese beiden Spalten zu kombinieren, sondern * die Daten irgendwie zu teilen? Können Sie bitte Code zeigen, um zu erklären, worüber Sie sprechen? –

+1

Auch aus praktischer Sicht sehe ich keinen Grund, R für etwas zu verwenden, das besser für eine relationale Datenbank geeignet ist. Warum machen Sie nicht einfach Ihre Vorverarbeitung in SQL oder etwas und senden dann die Ergebnisse an R? R ist nicht wirklich für ETL von Big Data. –

Antwort

0

Mit dem ff-Paket können Sie den Datenrahmen verwenden, ohne ihn in den Arbeitsspeicher zu laden. Ich bin nicht sicher, wie dies mit den doppelten oder eindeutigen Funktionen zusammenwirken würde, aber es kann etwas Ihre RAM-Nutzung verringern.

Verwandte Themen