Dies ist möglicherweise nicht genau Ihr Problem - 100 Millionen Features in einen gehosteten Feature-Service in ArcGIS Online laden - aber das Thema hier ist das Laden von Big Data in einen gehosteten Feature-Service in Online, 100 Millionen ist der Maßstab, über den ich spreche.<\/P>
So sehen 100.000.000 Features bei der Dichte aus, mit der ich arbeite.<\/P>
Ein Bereich etwa so groß wie ein Stadtblock:<\/P>
Layer not visible<\/span><\/span><\/P>Dann die Layer-Sichtbarkeit einschalten:<\/P>
Layer visible<\/span><\/span><\/P>Die Daten sind so groß, dass Pro 2.9 nicht versucht, sie bei Maßstäben kleiner als 1:500 anzuzeigen.<\/P>Hier ist die Hintergrundgeschichte. Eines der Esri-Teams, mit denen ich arbeite, beschäftigt sich gelegentlich mit Big Data, die für einen gehosteten Feature-Service in Online bestimmt sind. Das Web ist, wie es ist, sehr große Freigabevorgänge können aufgrund von Netzwerk- oder anderen Problemen fehlschlagen, woraufhin man die Situation an der Stelle wiederherstellen muss, an der sie unterbrochen wurde oder den gesamten Freigabeprozess neu starten muss. Sie wollten einen Prozess, der zuverlässig funktioniert und einen Wiederherstellungsmechanismus für jeden Fehler bietet. Sie waren auf dem Weg mit Python, was für Pythonistas in Ordnung ist, aber ich bin der No-Code-Typ im Büro (sagen wir ein sich erholender Programmierer, der gelegentlich rückfällig wird). ArcGIS Data Interoperability zur Rettung!<\/STRONG><\/P>Meine Testdaten sind eine CSV-Datei mit 143.751.910<\/STRONG> Zeilen.<\/P>
Anzahl abrufen<\/span><\/span><\/P> <\/P>Ich habe einfach mal 100 Millionen Zeilen als schöne runde Zahl genommen. Die Daten enthalten Lat/Lon-Werte, daher besteht der ETL-Aspekt darin, eine einfache räumliche Aktivierung vorzunehmen, um Punkt-Features zu erstellen. Nun stellt sich die Frage, wie man diese an eine Punkt-Feature-Layer sendet?<\/P>Ein vorläufiger Schritt war es, eine Stichprobe der Daten in eine File-Geodatabase zu übernehmen und daraus einen Feature-Service zu erstellen; dies instanziiert nur die Ziel-Layer. Dann ist das nachgelagerte Problem zweifach:<\/P>Laden Sie die Daten so performant wie möglich<\/LI>Verwenden Sie eine Methodik, die eine Wiederherstellung bei Fehlern unterstützt<\/LI><\/UL>Das Online-Team schlug vor, dass ein "Sweet Spot" für das Laden von Daten dieses Umfangs darin besteht, den Append-Endpunkt des Feature-Service mit Chargen von 500.000 Datensätzen in zwei gleichzeitigen Prozessen zu verwenden und dies "außerhalb der Geschäftszeiten" US-Zeit durchzuführen. Kein Problem, hier sind meine Arbeitsbereiche:<\/P>
LoadTaxis<\/span><\/span><\/P>LoadTaxis<\/STRONG> erstellt gezippte File-Geodatabases mit Sätzen von 500.000 Datensätzen<\/STRONG>, übergibt dann den Datenpfad an LoadTaxisWorker<\/STRONG> in maximal zwei Prozessen, die asynchron laufen. Ich stellte fest, dass die Zeit zum Erstellen der Daten gut zu der Zeit passt, die Online benötigt, um sie zu verarbeiten – etwas weniger als 2 Minuten pro Charge während Zeiten geringer Auslastung. Beim Beobachten der Protokolldatei gab es einige Fälle, in denen LoadTaxis<\/STRONG> pausierte, bis ein Prozessslot verfügbar wurde, aber normalerweise war Online bereit für die nächste Charge, sodass alles so schnell lief wie mein ETL-Prozess.<\/P> <\/P>
LoadTaxisWorker<\/span><\/span><\/P>LoadTaxisWorker<\/STRONG> lädt jede gezippte File-Geodatabase zu Online hoch und ruft dann den Service-Append-Endpunkt auf und startet damit einen Ladevorgang vom neuen File-Geodatabase-Element. Dies startet einen Job in Online. Ein sich wiederholender benutzerdefinierter Transformer prüft alle 5 Sekunden (mit einer maximalen Prüfanzahl von
Ich bevorzuge es tatsächlich, das LoadTaxisWorker-Tool im Bearbeitungsmodus (d.h. in Workbench) auszuführen, damit ich Dinge wie das Einschalten der Emailers machen kann, um die Aktion im Detail zu verfolgen. Es gibt auch dieses Problem, auf das man achten sollte, das ich in einem Spoiler-Tag verbergen werde:
SpoilerWarnung: Append, aufgerufen von LoadTaxisWorker, kann viel länger dauern als erwartet (Stunden statt Minuten), wenn es zu einer geschäftigen Zeit für Online ausgeführt wird - Append ist eine gemeinsame Ressource und kann in die Warteschlange gestellt werden. In diesem Fall wird der Emailer Ihnen mitteilen, dass 210 Sekunden (oder Ihre bevorzugte Timeout-Zeit) vergangen sind, ohne dass Append abgeschlossen wurde; es wird schließlich trotzdem fertiggestellt, aber die Bereinigungsoperationen werden nicht ausgelöst. Ich habe dies erlebt und den Emailer aktiviert, der die Job-URL sendet, damit ich ihn manuell beobachten konnte.
Jedenfalls haben Sie nach dem manuellen Ausführen Ihrer fehlgeschlagenen Jobs 100 Millionen Features in Ihrem Service!
Juhu, meine 100 Millionen Features sind geladen!
Wie schwer war das?
Die ETL-Tools befinden sich im Post-Download. Ich habe ArcGIS Pro 2.9 & Data Interoperability extension verwendet.