Pyspark: преобразование столбца в нижний регистр

Я хочу преобразовать значения внутри столбца в нижний регистр. В настоящее время, если я использую lower() метод, он жалуется, что объекты столбцов не вызываются. Так как есть функция под названием lower() в SQL я предполагаю, что есть собственное решение Spark, которое не включает UDFs или написание любого SQL.

1 ответов


вам нужно импортировать lower вместе с col:

from pyspark.sql.functions import lower, col

объединить их вместе с помощью lower(col("bla")). В полном запросе:

spark.table('bla').where(lower(col('bla')) == 'bla')

что эквивалентно SQL-запросу

SELECT bla FROM bla WHERE lower(bla) = "bla"

Излишне говорить, что этот подход лучше, чем использование UDF, потому что UDFs должны вызывать Python (который является медленной операцией, а сам Python медленный) и более элегантен, чем писать его в SQL.