创建一个数据帧时,我可以指定列名

问题描述 投票:-1回答:2

我的数据是在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标题行做到这一点

apache-spark
2个回答
0
投票

是的,你可以,有一种方法,您可以我们toDF数据框的功能。

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

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")

希望它会帮助你。

© www.soinside.com 2019 - 2024. All rights reserved.