Ich arbeite an der Gowalla dataset, die etwa 6,44 Millionen Checkins hat. Einzigartige Orte auf diesen Checkins sind 1,28 Millionen. Aber Gowalla gibt nur Breiten und Längen. Also muss ich Stadt, Staat und Land auf jedem dieser Lats und Longs finden. Hilfe von einem anderen Beitrag auf Stackoverflow verwenden Ich konnte die R-Abfrage unten erstellen, die die offenen Straßenkarten abfragt und die relevanten Details findet, die ich will.Schnellere Verarbeitung von JSON-Abfragen in 1,2 Millionen Zeilen in einem Datenrahmen in R
Leider dauert es etwa 1 Minute, um 125 Zeilen zu verarbeiten, was bedeutet, dass 1,28 Millionen Zeilen ein paar Tage dauern würden. Gibt es einen schnelleren Weg, diese Details zu finden? Mag sein, dass es ein Paket mit eingebauten Lats und Longs von Städten der Welt gibt, um den Namen der Stadt für den gegebenen Lat und Long zu finden, so dass ich keine Online-Abfrage durchführen muss.
Venue-Tabelle ist ein Datenrahmen mit 3 Spalten. 1. vid (venueId) 2. lat (Breitengrad) 3. lang (Länge)
for(i in 1:nrow(venueTable)){
#this is just an indicator to display current value of i on screen
cat(paste(".",i,"."))
#Below code composes the url query
url<-paste("http://nominatim.openstreetmap.org/reverse.php? format=json&lat="
,venueTableTest3$lat[i]
,"&lon="
,venueTableTest3$long[i]
)
url<-gsub(' ','',url)
url<-paste(url)
x<-fromJSON(url)
venueTableTest3$display_name[i]<-x$display_name
venueTableTest3$country[i]<-x$address$country
}
Ich bin mit dem jsonlite
Paket in R, die x
macht, die das Ergebnis der JSON Abfrage als Datenrahmen ist welche verschiedene zurückgegebene Ergebnisse speichert. So benutze ich x$display_name
oder mein Pflichtfeld.
Mein Laptop ist Core i5 3230M mit 8 GB RAM und 120 GB SSD mit Windows 8.
Nicht sicher, wie das in R zu tun, aber ich denke, dass Ihr Code synchron ist, was bedeutet, dass nur 1 HTTP-Anfrage zu einer Zeit gesendet wird. Wenn Sie in der Lage wären, 10 gleichzeitig zu senden, könnten Sie ~ 5x höhere Geschwindigkeiten erreichen. – Dodekeract