首页 > 解决方案 > 由于重复列,Spark 读取失败

问题描述

我正在尝试使用 scala 从数据块中的 S3 读取镶木地板文件。下面是简单的读取代码

val df = spark.read.parquet(s"/mnt/$MountName/tstamp=2020_03_25")
display(df)

MountName 是从 S3 挂载数据的 dbfs。但我收到错误,这是由于文件中的重复键。

SparkException: Job aborted due to stage failure: Task 0 in stage 813.0 failed 4 times, most recent failure: Lost task 0.3 in stage 813.0 (TID 79285, 10.179.245.218, executor 0): com.databricks.sql.io.FileReadException: Error while reading file dbfs:/mnt/Alibaba_data/tstamp=2020_03_25/ts-1585154320710.parquet.gz. 

Caused by: java.lang.RuntimeException: Found duplicate field(s) "subtype": [subtype, subType] in case-insensitive mode

现在我需要克服它。可能使读取区分大小写或在读取时删除列,或通过任何其他方式(如果建议)。

请提出建议。

标签: scalaapache-sparkdatabricks

解决方案


尝试启用区分大小写。 spark.sql.caseSensitive应设置为true


推荐阅读