将列名添加到从没有列名的 csv 文件读取的数据



我正在使用Apache Spark和Scala。

我有一个 csv 文件,第一行没有列名。是这样的:

28,Martok,49,476
29,Nog,48,364
30,Keiko,50,175
31,Miles,39,161

这些列代表ID,姓名,年龄,朋友数。

在我的 Scala 对象中,我正在使用 csv 文件的 SparkSession 创建数据集,如下所示:

val spark = SparkSession.builder.master("local[*]").getOrCreate()
val df = spark.read.option("inferSchema","true").csv("../myfile.csv")
df.printSchema()

当我运行程序时,结果是:

|-- _c0: integer (nullable = true)
|-- _c1: string (nullable = true)
|-- _c2: integer (nullable = true)
|-- _c3: integer (nullable = true)

如何向数据集中的列添加名称?

读取 CSV 文件时,可以使用toDF指定列名:

val df = spark.read.option("inferSchema","true").csv("../myfile.csv").toDF(
  "ID", "name", "age", "numOfFriends"
)

或者,如果已创建数据帧,则可以按如下方式重命名其列:

val newColNames = Seq("ID", "name", "age", "numOfFriends")
val df2 = df.toDF(newColNames: _*)
toDf           

可以使用方法,您可以在Spark Java中传入列名。

例:

Dataset<Row> rowsWithTitle = sparkSession.read().option("header", "true").option("delimiter", "t").csv("file").toDF("h1", "h2");

相关内容

  • 没有找到相关文章

最新更新