类型错误:col应为带有apache spark的列

qgelzfjb  于 2023-01-31  发布在  Apache
关注(0)|答案(1)|浏览(153)

我用这个方法收集正的值

def pos_values(df, metrics):
    num_pos_values = df.where(df.ttu > 1).count()

    df.withColumn("loader_ttu_pos_value", num_pos_values)

    df.write.json(metrics)

然而,每当我去测试它的时候,我都会得到TypeError: col should be Column。我试着铸造它,但这似乎不是一个选项。

uyhoqukh

uyhoqukh1#

出现此错误的原因是df.withColumn需要一个Column对象作为第二个参数,而您给出的num_pos_values是一个整数。
如果你想给一列赋一个字面值(每一行都有相同的值),你可以使用pyspark.sql.functionslit函数。
类似这样的方法是可行的:

df = spark.createDataFrame([("2022", "January"), ("2021", "December")], ["Year", "Month"])

df.show()
+----+--------+
|Year|   Month|
+----+--------+
|2022| January|
|2021|December|
+----+--------+

from pyspark.sql.functions import lit

df.withColumn("testColumn", lit(5)).show()
+----+--------+----------+
|Year|   Month|testColumn|
+----+--------+----------+
|2022| January|         5|
|2021|December|         5|
+----+--------+----------+

相关问题