gpt4 book ai didi

apache-spark - 无法在 pyspark 中推断 CSV 的架构

转载 作者:行者123 更新时间:2023-12-05 03:58:50 28 4
gpt4 key购买 nike

我正在使用数据 block 并尝试读取这样的 csv 文件:

df = (spark.read      
.option("header", "true")
.option("inferSchema", "true")
.csv(path_to_my_file)
)

我收到错误:

AnalysisException: 'Unable to infer schema for CSV. It must be specified manually.;'

我检查过我的文件不为空,我也试过像这样自己指定架构:

schema = "datetime timestamp, id STRING, zone_id STRING, name INT, time INT, a INT"
df = (spark.read
.option("header", "true")
.schema(schema)
.csv(path_to_my_file)
)

但是当尝试使用 display(df) 查看它时,它只是在下面给了我这个,我完全迷路了,不知道该怎么做。

df.show() 和 df.printSchema() 给出以下内容: enter image description here

enter image description here

看起来数据没有被读入数据框。

错误截图: enter image description here

最佳答案

请注意,这是一个不完整的答案,因为没有足够的信息来了解您的文件的外观,无法理解为什么 inferSchema 不起作用。我已将此回复作为答案放置,因为它作为评论来说太长了。

也就是说,为了以编程方式指定架构,您需要使用 StructType() 指定架构。

用你的例子datetime 时间戳,id STRING,zone_id STRING,name INT,time INT,mod_a INT"

它看起来像这样:

# Import data types
from pyspark.sql.types import *

schema = StructType(
[StructField('datetime', TimestampType(), True),
StructField('id', StringType(), True),
StructField('zone_id', StringType(), True),
StructField('name', IntegerType(), True),
StructField('time', IntegerType(), True),
StructField('mod_a', IntegerType(), True)
]
)

请注意,df.printSchema() 是如何指定所有列都是数据类型字符串的。

关于apache-spark - 无法在 pyspark 中推断 CSV 的架构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57683389/

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