gpt4 book ai didi

python - 在 pyspark 中找不到 col 函数

转载 作者:行者123 更新时间:2023-12-05 07:46:30 26 4
gpt4 key购买 nike

在 pyspark 1.6.2 中,我可以通过以下方式导入 col 函数

from pyspark.sql.functions import col

但是当我尝试在 Github source code 中查找它时我在functions.py 文件中找不到col 函数,python 如何导入一个不存在的函数?

最佳答案

它存在。它只是没有明确定义。从 pyspark.sql.functions 导出的函数是 JVM 代码的精简包装器,除了少数需要特殊处理的异常(exception)情况外,都是使用辅助方法自动生成的。

如果仔细查看出处you'll find col listed among other _functions .这本词典是further iterated_create_function用于生成包装器。每个生成的函数都直接分配给 globals 中的相应名称。

最后,__all__ 定义了从模块导出的项目列表,只导出所有 globals,不包括黑名单中包含的项目。

如果这个机制仍然不清楚你可以创建一个玩具示例:

  • 使用以下内容创建名为 foo.py 的 Python 模块:

    # 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)

这种元编程方法的一个不良副作用是,定义的函数可能无法被纯粹依赖于静态代码分析的工具识别。这不是一个关键问题,在开发过程中可以安全地忽略。

取决于 IDE 安装 type annotations可能会解决问题(参见示例 zero323/pyspark-stubs#172)。

关于python - 在 pyspark 中找不到 col 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40762203/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com