Pysaprk sql 运行时 No module named 'col'

前言:

  • 唉~很不幸又躺了一次坑,自己在这里困惑了好久,不过吃一堑长一智,躺坑躺多了.自然而然你就成长了.不说了在这里记录一下这个坑,也好给后面的小伙伴们指条名路:
  • 是这样的我这里使用Spark 的 Struct Streaming ,说来都是累啊这个东西根本没啥教程,官网的文档也就只是说了一些简单的入门用法,但在实际开发中可谓是困难重重啊,出了问题找个解决方案太难了…

正题:

  • 我的导包代码如下:
from pyspark.sql.functions import col
  • 在编辑器中运行时就出现了令人讨厌的红字:

  • No module named ‘col’

  • What? 我觉得它是在耍我

  • 于是在网上找了很久的资料,都没找到问题所在,后面在StackOveflow上面终于找到了答案,可能是这个问题太幼稚吧才这么难找.

  • 其实出现这个错误并的原因不是源码包的问题,而是代码编辑器的问题,它们进行检测编译时不能通过,所以就会报错

  • 出现的原因:
    先看示例

# =====================my_module.py==========================
# 创建一个函数命名为func
globals()["func"] = lambda x: print(x)
# 从全局变量当中找出上面定义的这个函数相关的元素
__all__ = [x for x in globals() if x.startswith("func")]
#===========================end==============================

# =======================test.py=============================
# 我们再来导入前面定义的这个包中的函数
from my_module import func
func("test")
# 如果你是在编辑器中执行的,你会发现不能通过编译检查,会说找不到func
# 这是因为只依赖于静态代码分析的工具可能无法识别已定义的功能,所以就造成了编译不能通过
  • 解决思路有三种:
    1.如果你是使用VS进行编程的可以通过修改 python.linting.pylintArgs 的值来解决
"python.linting.pylintArgs": [
        "--generated-members=pyspark.*",
        "--extension-pkg-whitelist=pyspark",
        "--ignored-modules=pyspark.sql.functions"
    ]
  1. 安装python包pyspark-stubs,他的作用就是改进一些静态包的提示检测问题
    注意 “x.x.x” 要改成你自己PySpark的版本号
pip install pyspark-stubs==x.x.x
  1. 其实这种方法最简单,其实就是绕开IDE的检查,但是这是可行的
from pyspark.sql.functions as f
f.col("values")

激励自己的话:
还是自己太年轻啊,还要在多趟一些坑才行,加油,骚年
Never give up!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值