python spark将dataframe列数据类型改为int错误

时间:2016-10-08 08:20:04

标签: python apache-spark types casting

我想将列类型转换为int并获取前3行

    df.withColumn("rn", rowNumber().over(windowSpec).cast('int')).where("rn"<=3).drop("rn").show()

但我这个错误

TypeError: unorderable types: str() <= int()

1 个答案:

答案 0 :(得分:2)

错误在于:

.where("rn"<=3)

如果你将来遇到类似的问题,那么你可以解决这个问题。以下

TypeError: unorderable types: str() <= int()

是Python异常,没有Py4JError。这通常意味着您可以解决JVM问题并专注于核心Python。您明确比较事物的代码中唯一的部分是:

"rn" <= 3

如果你想让它成为SQL文字,你应该传递一个字符串:

.where("rn <= 3")

如果您希望将rn解析为列,请使用col函数:

from pyspark.sql.functions import col

.where(col("rn") <= 3)

最新版本中还删除了rowNumber功能。您应该使用row_number来实现向前兼容性。