gpt4 book ai didi

python - 在 pyspark 中找不到 col 函数

转载 作者:IT老高 更新时间:2023-10-28 22:15:06 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/40163106/

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