创建DataFrame时可以指定列名称吗

时间:2019-02-03 15:23:28

标签: 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.spark.sql.DataFrame = [_c0: string, _c1: string ... 1 more field]

如果我不想使用_c0_c1,在读取文件时是否可以为列提供自己的名称?例如,我希望spark使用DESTORIGcount作为列名。我不想在csv中添加标题行

2 个答案:

答案 0 :(得分:0)

是的,有一种方法,您可以使用toDF数据框功能。

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

答案 1 :(得分:0)

最好先定义架构(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")

希望对您有所帮助。