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

标签 scala csv apache-spark apache-spark-sql

我在Scala中使用Apache Spark。

我有一个csv文件,该文件在第一行中没有列名。就像这样:

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

这些列代表ID,名称,年龄,numOfFriends。

在我的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"
)

或者,如果您已经创建了DataFrame,则可以按以下方式重命名其列:
val newColNames = Seq("ID", "name", "age", "numOfFriends")
val df2 = df.toDF(newColNames: _*)

关于scala - 将列名添加到从csv文件读取的数据中而没有列名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47120778/

相关文章:

arrays - 矩阵作为应用仿函数,不是 Monad

scala - 如何列出所有可用的隐式转换?

scala - docker akka和scala,应用程序无故启动和停止

scala - 无法在 Scala.IO.Source 中使用相对路径

r - csv 文件中字符串的 tf-idf

csv - 在 Python 中从 url 下载 csv.gz 文件

scala - Scala 中的定点

apache-spark - Spark 2.1.1 : How to predict topics in unseen documents on already trained LDA model in Spark 2. 1.1?

java - Apache Spark,Java 中使用 List<?> 作为第一个参数的 createDataFrame 示例

java - Spark 转换和 Action 的逻辑是否需要线程安全?