tutorial spark sources receive foreachrdd example data context python apache-spark pyspark

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?