In pyspark 1.6.2 kann ich col
function mit
Aber wenn ich versuche, es im Github-Quellcode nachzuschlagen Ich finde keine col
Funktion in functions.py
Datei, wie kann Python eine Funktion importieren, die nicht existiert?
Es existiert. Es ist nur nicht explizit definiert. Aus pyspark.sql.functions
exportierte Funktionen sind dünne Wrapper um JVM-Code und werden mit wenigen Ausnahmen, die eine spezielle Behandlung erfordern, automatisch mit Hilfsmethoden generiert.
Wenn Sie die Quelle sorgfältig prüfen, finden Sie col
aufgelistet unter anderem _functions
. Dieses Wörterbuch ist weiter iteriert und _create_function
wird verwendet, um Wrapper zu generieren. Jede generierte Funktion wird direkt einem entsprechenden Namen in globals
zugeordnet.
Schließlich __all__
, das eine Liste der aus dem Modul exportierten Elemente definiert, exportiert nur alle globals
, ausgenommen die in der Blacklist enthaltenen.
Wenn dieser Mechanismus noch nicht klar ist, können Sie ein Spielzeugbeispiel erstellen:
Erstellen Sie das Python-Modul namens foo.py
mit folgendem Inhalt:
Platzieren Sie es irgendwo im Python-Pfad (zum Beispiel im Arbeitsverzeichnis).
Import foo
:
Tags und Links python apache-spark pyspark apache-spark-sql pyspark-sql