Pyspark:将列转换为小写

Pyspark:将列转换为小写,pyspark,Pyspark,我想将列中的值转换为小写。当前,如果我使用lower()方法,它会抱怨列对象不可调用。由于SQL中有一个名为lower()的函数,我假设有一个本机Spark解决方案,它不涉及UDF或编写任何SQL。Importlower和col: 使用lower(col(“bla”))将它们组合在一起。在完整查询中: 这相当于SQL查询 要保留其他列,请执行以下操作: spark.table('foo').withColumn('bar', lower(col('bar'))) 不用说,这种方法比使用U

我想将列中的值转换为小写。当前,如果我使用
lower()
方法,它会抱怨列对象不可调用。由于SQL中有一个名为
lower()
的函数,我假设有一个本机Spark解决方案,它不涉及UDF或编写任何SQL。

Import
lower
col

使用
lower(col(“bla”))
将它们组合在一起。在完整查询中:

这相当于SQL查询

要保留其他列,请执行以下操作:

spark.table('foo').withColumn('bar', lower(col('bar')))

不用说,这种方法比使用UDF更好,因为UDF必须调用Python(这是一个缓慢的操作,Python本身也很慢),并且比用SQL编写更优雅。

您可以使用concat_ws和split的组合

from pyspark.sql.functions import *

df.withColumn('arr_str', lower(concat_ws('::','arr'))).withColumn('arr', split('arr_str','::')).drop('arr_str')
SELECT lower(bla) AS bla FROM bla
spark.table('foo').withColumn('bar', lower(col('bar')))
from pyspark.sql.functions import *

df.withColumn('arr_str', lower(concat_ws('::','arr'))).withColumn('arr', split('arr_str','::')).drop('arr_str')