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.