【发布时间】:2020-07-15 00:33:51
【问题描述】:
我在从 S3 读取 PARQUET 文件时出错,原因是“final_height”列在同一个分区中有 String 和 Double 类型。有关信息,parquet 文件中有 20 多列。我得到的错误是:
ERROR 1: Failed merging schema of file ".../part1.gz.parquet":
ERROR 2: Caused by: org.apache.spark.SparkException:
Failed to merge fields 'final_height' and 'final_height'. Failed to merge incompatible data types double and string
ERROR 3: com.databricks.sql.io.FileReadException:
Error while reading file ".../part1.gz.parquet".
Parquet column cannot be converted. Column: [final_height], Expected: StringType, Found: DOUBLE
ERROR 4: com.databricks.sql.io.FileReadException:
Error while reading file ".../part1.gz.parquet".
Parquet column cannot be converted. Column: [final_height], Expected: DoubleType, Found: BINARY
ERROR 5: org.apache.spark.sql.execution.datasources.SchemaColumnConvertNotSupportedException
当 "part1.gz.parquet" 有 X 列的 String 数据和 "part2.gz.parquet" 时找到了一些解决方案在同一列中有双重数据。但是,当在同一分区中发现同一列中的不同类型时,它们不起作用。
试过了:
- 使用 mergeSchema 和 inferSchema 选项读取 (出现错误 1 和 2)
- 使用预定义的手动模式读取“final_height”列的字符串类型(出现错误 3 和 5)
- 使用 Double 类型的预定义手动模式读取“final_height”列 (出现错误 4 和 5)
希望有一些解决方案:)
谢谢!
【问题讨论】:
标签: scala apache-spark amazon-s3 parquet databricks