apachesparkscala使用内置函数的小写首字母

hi3rlvi2  于 2021-07-13  发布在  Spark
关注(0)|答案(1)|浏览(292)

我正在尝试将列值的第一个字母小写。
我找不到一个方法来降低只有第一个字母使用内置函数,我知道有 initCap 但我正试图斩首。我尝试使用子字符串,但看起来有点过分,没有工作。

val data = spark.sparkContext.parallelize(Seq(("Spark"),("SparkHello"),("Spark Hello"))).toDF("name")
data.withColumn("name",lower(substring($"name",1,1)) + substring($"name",2,?))

我知道我可以创建一个自定义自定义自定义项,但我想可能有一个内置的解决方案。

t1rydlwq

t1rydlwq1#

您可以使用sparksql substring 方法,该方法允许忽略长度参数(并将获取字符串直到结束):

data.withColumn("name", concat(lower(substring($"name",1,1)), expr("substring(name,2)"))).show
+-----------+
|       name|
+-----------+
|      spark|
| sparkHello|
|spark Hello|
+-----------+

请注意,您不能 + 串。你需要使用 concat .

相关问题