我正在尝试将 Parquet 文件读入 Spark DataFrames,但代码对某些文件抛出异常。
df = spark.read.parquet("s3://bucket_name/bad_file.parquet")
<块引用>
org.apache.spark.SparkException:作业因阶段失败而中止:阶段 348.0 中的任务 0 失败 1 次,最近失败:阶段 348.0 中丢失任务 0.0(TID 231,ip-10-248-56-87 .eu-west-1.compute.internal,执行器驱动程序):java.io.IOException:无法读取或转换文件的架构:s3://bucket_name/bad_file.parquet
使用“AWS S3 Select”查询文件我注意到所有有问题的文件在第一行都有空值/缺失值。一个例子是:
<块引用>U,326278,2021001,,15
U,326278,2021001,123,15
我相信 Spark 正在尝试执行模式推断,当看到第一行中的空值/缺失值时猜测不正确,然后在同一列的后面一行中找到数值时抛出异常。
如何将 Parquet 文件读入 Spark DataFrame,第一行为 null?
*最好不要为每个文件手动定义架构。