So schalten Sie die pip / pypi installiert python-Pakete als zip-Dateien verwendet werden, die in AWS-Kleber

Ich bin das arbeiten mit AWS-Kleber und PySpark ETL-Skripten und verwenden möchten, Hilfs-Bibliotheken wie google_cloud_bigquery als Teil meiner PySpark scripts.

Den Dokumentation Mitgliedstaaten sollte dies möglich sein. Diese vorherigen Stack-Overflow-Diskussion, vor allem ein Kommentar in einer der Antworten scheint zu liefern, zusätzliche Beweis. Allerdings wie, es zu tun, ist mir unklar.

So ist das Ziel, drehen Sie die pip installed-Pakete in eine oder mehrere zip-Dateien, um der Lage sein, nur der host die Pakete auf S3 und zeigen Ihnen wie so:

s3://bucket/prefix/lib_A.zip,s3://bucket_B/prefix/lib_X.zip

Wie , dass gemacht werden sollten, ist nicht eindeutig erklärt, wo ich geschaut habe.

d.h. wie kann ich pip install ein Paket und dann drehen Sie es in einer zip-Datei, dass ich den upload auf S3 so PySpark verwenden können, es mit solch einer S3-URL?

Durch die Verwendung des Befehls pip download ich habe in der Lage zu Holen die libs, aber Sie sind nicht .zip-Dateien standardmäßig, aber statt entweder .whl-Dateien oder .tar.gz

..also nicht sicher, was zu tun ist, schalten Sie Sie in zip-Dateien, die AWS-Kleber verdauen können. Vielleicht mit .tar.gz ich konnte nur tar -xf Sie und dann zip Sie wieder oben, aber wie wäre es whl-Dateien?

InformationsquelleAutor herb | 2018-03-07



One Reply
  1. 7

    So, nachdem sich durch die Materialien, die ich aus den Kommentaren über die letzten 48 Stunden, hier ist, wie ich das Problem gelöst.

    Hinweis: ich benutze Python2.7, weil das ist, was AWS Kleber scheint zu Schiff mit.

    Durch die folgenden Anweisungen in E. Kampf den blog-Beitrag „Best Practices Schreiben Production-Grade PySpark Jobs“ und dieser stack overflow-Antwort, und einige Anpassungen aufgrund von zufälligen Fehlern auf dem Weg habe ich Folgendes:

    1. Erstellen Sie ein neues Projekt Ordner namens ziplib und die cd in Sie:

    mkdir ziplib && cd ziplib

    1. Erstellen Sie eine requirements.txt Datei mit den Namen der Pakete, die in jeder Zeile.

    2. Erstellen Sie einen Ordner namens deps:

    mkdir deps

    1. Erstellen Sie eine neue virtualenv-Umgebung mit python 2.7 im aktuellen Ordner:

    virtualenv -p python2.7 .

    1. Installieren Sie die Anforderungen in den Ordner ab, die Verwendung von ABSOLUTEN Pfaden (sonst nicht funktioniert):

    bin/pip2.7 install -r requirements.txt --install-option --install-lib="/absolute/path/to/.../ziplib/deps"

    1. – cd in das deps-Ordner und zip-seine Inhalte in zip-Archiv deps.zip in den übergeordneten Ordner, und dann cd aus der deps-Ordner:

    cd deps && zip -r ../deps.zip . && cd ..

    ..und nun habe ich also eine zip-Datei, die wenn ich auf AWS S3 und von PySpark auf AWS-Kleber, es scheint zu funktionieren.

    JEDOCH… was ich noch nicht in der Lage zu lösen ist, dass da einige Pakete, wie der Google-Cloud-Python-client-Bibliotheken verwenden, was ist bekannt als Implizite Namespace Packages (PEP-420), Sie haben nicht die __init__.py – Dateien in der Regel in Modulen, und damit die import-Anweisungen funktionieren nicht. Ich bin ratlos hier.

    • Ich bin auf der Suche für das gleiche wie gut. Wird numpy / panda auch funktionieren, wenn verpackt, auf diese Weise? Dank
    • Kraut, können Sie bitte erklären, mehr auf „so, jetzt habe ich eine zip-Datei, die wenn ich auf AWS S3 und von PySpark auf AWS-Kleber, es scheint zu funktionieren.“ Wie hast du den pandas oder andere pip-Bibliotheken für Ihre pyspark. Ich bin nicht in der Lage zu verwenden, pip installiert Bibliotheken pandas, Urlaub, etc in meinem Klebstoff-Auftrag. Dank
    • basierend auf diese Antwort: stackoverflow.com/questions/46329561/aws-glue-python „Nur Reine Python-Bibliotheken können verwendet werden. Bibliotheken, die sich auf C-Erweiterungen wie die pandas Python Data Analysis Library, werden noch nicht unterstützt.“
    • Ok, warum haben Sie eine zip-Datei, welche Pakete / Bibliotheken hast du das Paket in einer zip-Datei. Bin neugierig zu wissen, da Sie erwähnt „..es scheint zu funktionieren..“, bcoz ich glaube alle unterstützten Pakete für python, die bereits verfügbaren Standard-in-Kleber-Umgebung (andere als solche Ausnahmen) ? Bitte klären Sie. Dank

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.