Spark Java -如何在Spark Java中将非分隔文件转换为数据集

v09wglhw  于 2023-05-29  发布在  Apache
关注(0)|答案(1)|浏览(376)

我需要读取一个非分隔文件,并将其转换为spark java中的dataset。需要通过从csv阅读并根据每个属性的大小拆分每行来Map到列名。请告诉我如何在spark java中做。

cfh9epnr

cfh9epnr1#

在Java中,我不能像使用Scala那样做到这一点,但是可以使用FoldLeft连续地应用substringslice操作,或者不使用FoldLeft也可以这样做。
Scala中的一个例子,你可以转换-这是一个不太高级的选项:

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

返回:

+-----+--------+---+
|   C1|      C2| C3|
+-----+--------+---+
|C1111|sometext|999|
|C2222|sometext|888|
+-----+--------+---+

然后,您将不得不转换为类型。

相关问题