2016-10-20 2 views

ответ

13

Существует. Он просто не определен явно. Функции, экспортированные из pyspark.sql.functions, представляют собой тонкие обертки вокруг кода JVM и, за некоторыми исключениями, которые требуют специальной обработки, генерируются автоматически с использованием вспомогательных методов.

Если вы внимательно изучите источник you'll find col listed among other _functions. Этот словарь further iterated и _create_function используется для создания оберток. Каждая сгенерированная функция напрямую назначается соответствующему имени в globals.

Наконец __all__, который определяет список элементов, экспортированных из модуля, только экспортирует все globals, исключая те, которые содержатся в черном списке.

Если этот механизм до сих пор не ясно, что вы можете создать пример игрушка:

  • Создать модуль Python под названием foo.py со следующим содержанием:

    # 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")] 
    
  • Место это где-то на пути Python (например, в рабочем каталоге).

  • Импорт foo:

    from foo import foo 
    
    foo(1) 
    
+0

@Bhaskar Поскольку 'ср (у) .first() [0]' (в частности, '.first() [0]') не имеет никакого смысла. Это не имеет ничего общего с описанной здесь проблемой. – user6910411

+0

, можете ли вы предоставить нам конкретный пример? мой идеал показывает «неразрешенную ошибку» – AEDWIP

+0

@ AEDWIP. Тогда это просто плохая среда. – user6910411