sources - spark streaming python
No se puede encontrar la funciĆ³n col en pyspark (1)
Existe. Simplemente no está definido explícitamente. Las funciones exportadas desde las funciones pyspark.sql.functions
envolturas delgadas alrededor del código JVM y, con unas pocas excepciones que requieren un tratamiento especial, se generan automáticamente utilizando métodos auxiliares.
Si revisa cuidadosamente la fuente , encontrará col
listado entre otras _functions
. Este diccionario se itera adicionalmente y _create_function
se usa para generar wrappers. Cada función generada se asigna directamente a un nombre correspondiente en los globals
.
Finalmente, __all__
, que define una lista de elementos exportados desde el módulo, solo exporta todos los globals
excluyendo los contenidos en la lista negra.
Si este mecanismo aún no está claro, puedes crear un ejemplo de juguete:
Crear un módulo de Python llamado
foo.py
con el siguiente contenido:# Creates a function assigned to the name foo globals()["foo"] = lambda x: "foo {0}".format(x) # Exports all entries from globals which start with foo __all__ = [x for x in globals() if x.startswith("foo")]
Colóquelo en algún lugar de la ruta de Python (por ejemplo, en el directorio de trabajo).
Importar
foo
:from foo import foo foo(1)
En pyspark 1.6.2, puedo importar la función col
por
from pyspark.sql.functions import col
pero cuando trato de buscarlo en el código fuente de Github no encuentro ninguna función col
en el archivo functions.py
, ¿cómo puede Python importar una función que no existe?