import org.apache.spark.sql.functions._
import spark.implicits._
// Cols for renaming.
val list = List("C1", "C2", "C3")
// Gen some data.
val df = Seq(
("C1111sometext999"),
("C2222sometext888"),
).toDF("data")
// "heavy" lifting.
val df2 = df.selectExpr("substring(data, 0, 5)", "substring(data, 6,8)", "substring(data, 14,3)")
// Rename from list. Can also do "as Cn" in selectExpr.
val df3 = df2.toDF(list:_*)
df3.show
1条答案
按热度按时间cfh9epnr1#
在Java中,我不能像使用Scala那样做到这一点,但是可以使用
FoldLeft
连续地应用substring
或slice
操作,或者不使用FoldLeft
也可以这样做。Scala中的一个例子,你可以转换-这是一个不太高级的选项:
返回:
然后,您将不得不转换为类型。