scala - 由于重复列,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
现在我需要克服它。可能使读取区分大小写或在读取时删除列,或通过任何其他方式(如果建议)。
请提出建议。
解决方案
尝试启用区分大小写。
spark.sql.caseSensitive
应设置为true
。
推荐阅读
- css - 是受元素本身字体大小影响的字体大小相对长度
- php - Wordpress 如何为自定义帖子类型执行嵌套/多级查询
- c# - C# OLEDB 查询未正确填充元素
- c# - log4net - 作为组件服务调用时出错
- django - 在窗口方法中排序的正确方法(具有两个或多个字段)
- mysql - 如何使用 vb.net 将 MYSQL 表中的数据导入 SQL Server Compact 表(.sdf)
- mysql - 如何更新mysql表中的数据
- ruby-on-rails - 具有显示 Object 的 has_and_belongs_to_many 关联的模型不支持 #inspect
- vue.js - Vue/Nuxt 404 页面自定义
- android - 如何使用 gradlew 列出所有构建变体?