Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache Spark scala使用内置函数以小写字母开头_Scala_Apache Spark_Apache Spark Sql - Fatal编程技术网

Apache Spark scala使用内置函数以小写字母开头

Apache Spark scala使用内置函数以小写字母开头,scala,apache-spark,apache-spark-sql,Scala,Apache Spark,Apache Spark Sql,我正在尝试将列值的第一个字母小写 我无法找到使用内置函数仅降低第一个字母的方法,我知道有initCap用于资本化数据,但我正在尝试去资本化。 我尝试使用子字符串,但看起来有点过度,没有起作用 val data = spark.sparkContext.parallelize(Seq(("Spark"),("SparkHello"),("Spark Hello"))).toDF("name") data.withCol

我正在尝试将列值的第一个字母小写

我无法找到使用内置函数仅降低第一个字母的方法,我知道有
initCap
用于资本化数据,但我正在尝试去资本化。 我尝试使用子字符串,但看起来有点过度,没有起作用

val data = spark.sparkContext.parallelize(Seq(("Spark"),("SparkHello"),("Spark Hello"))).toDF("name")
data.withColumn("name",lower(substring($"name",1,1)) + substring($"name",2,?))
我知道我可以创建自定义自定义自定义项,但我认为可能有一个内置的解决方案。

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

请注意,您不能
+
字符串。您需要使用
concat

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