Вы можете создать UDF, чтобы получить длину столбца, а затем инкапсулировать функцию подстроки в функцию expr
val colLength = udf { (col: String) => col.size }
А затем используйте его в своем коде
val A = DF.select(col("example_ref"), expr("substring(col(example_ref),11, colLength(col(example_ref)))"))
PS. Мне больше всего нравится синтаксис доллара, чтобы получить столбцы
val A = DF.select($"example_ref", expr("substring(example_ref,11, colLength(example_ref))"))
EDIT
Как указано в комментариях, для этого уже есть функция, поэтому вам даже не нужно определять UDF:
import org.apache.spark.sql.functions.length
val A = DF.select($"example_ref", expr("substring(example_ref,11, length(example_ref))"))
БЫСТРЫЙ ПРИМЕР
ВХОД
scala> val df = sc.parallelize(List((1, "abc"),(2, "bcd"),(3, "cde"))).toDF("number", "mycolumn")
df: org.apache.spark.sql.DataFrame = [number: int, mycolumn: string]
scala> df.show
+------+--------+
|number|mycolumn|
+------+--------+
| 1| abc|
| 2| bcd|
| 3| cde|
+------+--------+
OUTPUT
df.select(expr("substring(mycolumn, 2, length(mycolumn))")).show
+----------------------------------------+
|substring(mycolumn, 2, length(mycolumn))|
+----------------------------------------+
| bc|
| cd|
| de|
+----------------------------------------+