gpt4 book ai didi

scala - 在 Scala Spark 中将 csv 文件作为数据帧读取时提供架构

转载 作者:行者123 更新时间:2023-12-02 17:39:50 25 4
gpt4 key购买 nike

我正在尝试将 csv 文件读入数据帧。我知道我的数据框的架构应该是什么,因为我知道我的 csv 文件。我还使用 Spark csv 包来读取文件。我尝试指定如下所示的架构。

val pagecount = sqlContext.read.format("csv")
.option("delimiter"," ").option("quote","")
.option("schema","project: string ,article: string ,requests: integer ,bytes_served: long")
.load("dbfs:/databricks-datasets/wikipedia-datasets/data-001/pagecounts/sample/pagecounts-20151124-170000")

但是当我检查我创建的数据框的架构时,它似乎采用了自己的架构。我做错了什么吗?如何让 Spark 获取我提到的模式?

> pagecount.printSchema
root
|-- _c0: string (nullable = true)
|-- _c1: string (nullable = true)
|-- _c2: string (nullable = true)
|-- _c3: string (nullable = true)

最佳答案

尝试下面的代码,您不需要指定架构。当您将 inferSchema 设置为 true 时,它​​应该从您的 csv 文件中获取它。

val pagecount = sqlContext.read.format("csv")
.option("delimiter"," ").option("quote","")
.option("header", "true")
.option("inferSchema", "true")
.load("dbfs:/databricks-datasets/wikipedia-datasets/data-001/pagecounts/sample/pagecounts-20151124-170000")

如果您想手动指定架构,可以按如下方式操作:

import org.apache.spark.sql.types._

val customSchema = StructType(Array(
StructField("project", StringType, true),
StructField("article", StringType, true),
StructField("requests", IntegerType, true),
StructField("bytes_served", DoubleType, true))
)

val pagecount = sqlContext.read.format("csv")
.option("delimiter"," ").option("quote","")
.option("header", "true")
.schema(customSchema)
.load("dbfs:/databricks-datasets/wikipedia-datasets/data-001/pagecounts/sample/pagecounts-20151124-170000")

关于scala - 在 Scala Spark 中将 csv 文件作为数据帧读取时提供架构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39926411/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com