PySpark:类型错误:'Column'对象不可调用



我正在从HDFS加载数据,我想通过特定变量过滤。但不知怎么的,纵队。Isin命令不起作用。它抛出以下错误:

TypeError: 'Column' object is not callable

from pyspark.sql.functions import udf, col
variables = ('852-PI-769', '812-HC-037', '852-PC-571-OUT')
df = sqlContext.read.option("mergeSchema", "true").parquet("parameters.parquet")
same_var = col("Variable").isin(variables)
df2 = df.filter(same_var)

模式如下所示:

df.printSchema()
root
 |-- Time: timestamp (nullable = true)
 |-- Value: float (nullable = true)
 |-- Variable: string (nullable = true)

你知道我做错了什么吗?PS:这是Spark 1.4与Jupyter笔记本。

问题是isin是在1.5.0版本中添加到Spark的,因此在您的Spark版本中还没有isin的文档。

Scala API中有一个类似的函数in,它在1.3.0中引入,具有类似的功能(由于in只接受列,因此在输入方面存在一些差异)。在PySpark中,这个函数被称为inSet。文档中的用法示例:

df[df.name.inSet("Bob", "Mike")]
df[df.age.inSet([1, 2, 3])]

注意: inSet在1.5.0及以后的版本中被弃用,isin应在较新的版本中使用

请使用下面的代码检查

df.filter(df.Variable.isin(['852-PI-769', '812-HC-037', '852-PC-571-OUT']))

相关内容

  • 没有找到相关文章

最新更新