PySpark:TypeError:“str”对象在 Dataframe 操作中不可调用

tjjdgumg  于 2023-03-22  发布在  Spark
关注(0)|答案(3)|浏览(173)

我正在循环中从文件夹中阅读文件并从中创建 Dataframe 。然而,我得到了这个奇怪的错误TypeError: 'str' object is not callable。请在这里找到代码:

for yr in range (2014,2018):
  cat_bank_yr = sqlCtx.read.csv(cat_bank_path+str(yr)+'_'+h1+'bank.csv000',sep='|',schema=schema)
  cat_bank_yr=cat_bank_yr.withColumn("cat_ledger",trim(lower(col("cat_ledger"))))
  cat_bank_yr=cat_bank_yr.withColumn("category",trim(lower(col("category"))))

代码运行一次迭代,然后停在

cat_bank_yr=cat_bank_yr.withColumn("cat_ledger",trim(lower(col("cat_ledger"))))

上面的错误。
有人能帮忙吗?

gk7wooem

gk7wooem1#

您的代码看起来很好-如果错误确实发生在您所说的行中,那么您可能不小心用字符串覆盖了其中一个PySpark函数。
要检查这一点,请将以下代码直接放在for循环的上方,看看代码现在是否运行而没有错误:

from pyspark.sql.functions import col, trim, lower

或者,仔细检查代码是否真的停在你说的那一行,或者检查col,trim,lower是否是你期望的那样,通过这样调用它们:

col

应返回
function pyspark.sql.functions.create_function..(col)

cld4siwp

cld4siwp2#

在导入部分中用途:

from pyspark.sql import functions as F

然后在代码中使用col的地方,使用F.col,这样您的代码将是:

# on top/header part of code 
from pyspark.sql import functions as F
    
for yr in range (2014,2018):
    cat_bank_yr = sqlCtx.read.csv(cat_bank_path+str(yr)+'_'+h1+'bank.csv000',sep='|',schema=schema)
    cat_bank_yr=cat_bank_yr.withColumn("cat_ledger",trim(lower(F.col("cat_ledger"))))
    cat_bank_yr=cat_bank_yr.withColumn("category",trim(lower(F.col("category"))))

希望这能起作用祝你好运。

qzwqbdag

qzwqbdag3#

还有一个可能的原因。在你的脚本中,你可能使用col作为变量。这也会导致错误信息。

相关问题