我想将列中的值转换为小写.目前,如果我使用该lower()方法,它会抱怨列对象不可调用.由于lower()在SQL中调用了一个函数,我假设有一个本机Spark解决方案,它不涉及UDF或编写任何SQL.
jka*_*brg 21
导入lower旁边col:
from pyspark.sql.functions import lower, col
Run Code Online (Sandbox Code Playgroud)
将它们组合在一起使用lower(col("bla")).在完整的查询中:
spark.table('bla').select(lower(col('bla')).alias('bla'))
Run Code Online (Sandbox Code Playgroud)
这相当于SQL查询
SELECT lower(bla) AS bla FROM bla
Run Code Online (Sandbox Code Playgroud)
要保留其他列,请执行
spark.table('foo').withColumn('bar', lower(col('bar')))
Run Code Online (Sandbox Code Playgroud)
毋庸置疑,这种方法比使用UDF更好,因为UDF必须调用Python(这是一个缓慢的操作,而Python本身很慢),并且比在SQL中编写它更优雅.
小智 7
from pyspark.sql.functions import lower
df = df.withColumn("col_name", lower(df["col_name"]))
Run Code Online (Sandbox Code Playgroud)
您可以结合使用 concat_ws 和 split
from pyspark.sql.functions import *
df.withColumn('arr_str', lower(concat_ws('::','arr'))).withColumn('arr', split('arr_str','::')).drop('arr_str')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
22443 次 |
| 最近记录: |