python spark изменяет тип данных столбца фрейма данных на ошибку int

#python #apache-spark #types #casting

#python #apache-spark #типы #Кастинг

Вопрос:

Я хочу привести тип столбца к int и получить первые 3 строки

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

но я эту ошибку

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

Ответ №1:

Ошибка здесь:

 .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 для прямой совместимости.