Apache spark 我可以在创建数据帧时指定列名吗

Apache spark 我可以在创建数据帧时指定列名吗,apache-spark,Apache Spark,我的数据在csv文件中。该文件没有任何标题列 United States Romania 15 United States Croatia 1 United States Ireland 344 Egypt United States 15 如果我阅读它,Spark会自动为列创建名称 scala> val data = spark.read.csv("./data/flight-data/csv/2015-summary.csv") data: org.apache.

我的数据在csv文件中。该文件没有任何标题列

United States   Romania 15
United States   Croatia 1
United States   Ireland 344
Egypt   United States   15
如果我阅读它,Spark会自动为列创建名称

scala> val data = spark.read.csv("./data/flight-data/csv/2015-summary.csv")
data: org.apache.spark.sql.DataFrame = [_c0: string, _c1: string ... 1 more field]

如果我不想使用_c0、_c1,在读取文件时是否可以为列提供我自己的名称?例如,我希望spark使用DEST、ORIG和count作为列名。我不想在csv中添加标题行来执行此操作

是的,您可以,有一种方法,您可以使用dataframe的toDF函数

val data = spark.read.csv("./data/flight-data/csv/2015-summary.csv").toDF("DEST", "ORIG", "count")

最好先定义模式StructType,然后使用模式加载csv数据

以下是如何定义架构:

import org.apache.spark.sql.types._
val schema = StructType(Array(
      StructField("DEST",StringType,true),
      StructField("ORIG",StringType,true),
      StructField("count",IntegerType,true)
    ))
加载数据帧:

val df = spark.read.schema(schema).csv("./data/flight-data/csv/2015-summary.csv")
希望它能帮助你