Frage

Weiß jemand, ob es möglich ist, einen großen Datensatz in Amazon S3 aus einer URL zu importieren?

Grundsätzlich möchte ich es vermeiden, eine riesige Datei herunterzuladen und sie dann über das Webportal auf S3 zu beladen. Ich möchte nur die Download -URL an S3 zur Verfügung stellen und darauf warten, dass sie sie in ihr Dateisystem herunterladen. Es scheint eine einfache Sache zu tun, aber ich kann die Dokumentation einfach nicht finden.

War es hilfreich?

Lösung

Da Sie offensichtlich ein AWS -Konto besitzen, würde ich Folgendes empfehlen:

  • Erstellen Sie eine EC2 -Instanz (jede Größe)
  • Verwenden wget(oder locken), um die Datei (en) zu dieser EC2 -Instanz abzurufen. Zum Beispiel: wget http://example.com/my_large_file.csv.
  • Installieren s3cmd
  • Verwenden s3cmd So laden Sie die Datei auf S3 hoch. Zum Beispiel: s3cmd cp my_large_file.csv s3://my.bucket/my_large_file.csv

Da Verbindungen zwischen verschiedenen AWS -Diensten hergestellt wurden, nutzen Sie das interne Netzwerk von AWS, und das Hochladen von einer EC2 -Instanz zu S3 ist ziemlich schnell. Viel schneller als das Hochladen von Ihrem eigenen Computer. Auf diese Weise können Sie vermeiden, die Datei auf Ihren Computer herunterzuladen und potenziell erhebliche Zeit zu speichern, das sie über die Weboberfläche hochladen kann.

Andere Tipps

  1. Starten Sie eine EC2 -Instanz mit ausreichend Speicherplatz

  2. SSH zur Instanz

  3. Rufen Sie den Befehl curl ab, der dem Download von Ihrem lokalen Computer entspricht. Sie können die Entwickleroptionen in Google Chrome -> Registerkarte Netzwerk -> kopieren -> als Curl kopieren (dieser Schritt ist für einige Websites erforderlich, für die Authentifizierung wie Kaggle erforderlich ist).

  4. Führen Sie die Instanzterminal aus curl Befehl (anhängen -o output_file zum Befehl). Dadurch wird die Datei heruntergeladen und gespeichert

  5. Konfigurieren Sie AWS -Anmeldeinformationen, um die Instanz mit S3 zu verbinden (eine Möglichkeit besteht darin, den Befehl zu verwenden aws config, geben Sie AWS Access Key ID und Geheimnis an).

  6. Verwenden Sie diesen Befehl, um die Datei auf S3 hochzuladen:

    aws s3 cp path-to-file s3://bucket-name/
    

Siehe AWS -Dokumentation: http://aws.amazon.com/code Für die meisten Programmiersprachen stehen Bibliotheken zur Verfügung. Sie können also einen Eimer erstellen und in Ihrem Code konfigurieren, um Daten von der URL abzurufen und in diesen Eimer in S3 zu schreiben

für zB in Python:

from boto.s3.key import Key
k = Key(bucket)
k.key = 'foobar'
k.set_contents_from_string(url_data)

Ref: https://boto.readthedocs.org/en/latest/s3_tut.html

Sie können Ihren S3 -Bucket an der EC2 -Instanz und anschließend an den/path/to/s3_mounted_on_a_Folder montieren. Dort können Sie einfach den Befehl verwenden:

wget https://your.download.url/

Verwenden Sie S3Fs, um S3 zu Ihrem EC2 zu montieren.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit datascience.stackexchange
scroll top