gpt4 book ai didi

azure - 读取 CSV 时,是否可以选择从第 2 行或以下行开始?

转载 作者:行者123 更新时间:2023-12-02 23:42:07 25 4
gpt4 key购买 nike

我正在使用下面的示例代码将一堆 CSV 文件读取到数据框中。

val df = spark.read.format("csv")
.option("sep","|")
.option("inferSchema","true")
.option("header","false")
.load("mnt/rawdata/corp/ABC*.gz")

我希望有一种方法可以从第 2 行或以下开始,因为第 1 行包含有关这些文件的一些基本元数据,并且第一行有 4 个管道字符,因此 Spark 认为该文件有 4 列,但它实际数据实际上有超过 100 列。

我尝试使用 inferSchema 和 header ,但我无法让任何东西发挥作用。

最佳答案

如果 CSV 中的第一行与实际列数和名称不匹配,您可能需要手动定义架构,然后尝试以下组合:

val df = spark.read.format("csv")
.option("sep","|")
.option("inferSchema","false")
.option("header","true")
.schema(mySchema)
.option("enforceSchema","true")
.load(...

Full list of CSV options

请注意,对于 Spark 2.3 及更高版本,您可以使用 SQL 样式的简写表示法进行模式定义 - 简单字符串 “column1 type1,column2 type2,...”

但是,如果您的 header 有多于一行,您可能会被迫使用附加选项 .option("mode","DROPMALFORMED") 来忽略所有“错误”。

关于azure - 读取 CSV 时,是否可以选择从第 2 行或以下行开始?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58591007/

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