Spark Excel插件读取文件时遇schema推断参数报错问题咨询
问题原因
你使用的Spark Excel数据源(大概率是crealytics的spark-excel库)不支持inferSchema这个配置项,报错信息已明确提示该选项无效。问题出在你混淆了Spark原生数据源(如CSV/JSON)的参数,和Spark Excel库的参数差异,或是使用了不支持该参数的旧版本库。
解决方案
根据你的需求,有两种处理方式:
1. 自动推断Schema(匹配你的原始需求)
如果你用的是旧版本crealytics spark-excel(0.13.x及以前),自动推断Schema的参数是typeInference而非inferSchema,修改代码如下:
val df = spark.read .format("excel") .option("sheetNamePattern", section.section_name) .option("cellAddress", section.header_start_pos) .option("headerRowCount", 1) .option("typeInference", "true") // 替换原有的inferSchema .option("orientation","ROW") .load(path)
如果你用的是新版本crealytics spark-excel(0.14.x及以后),该库已支持inferSchema参数,若仍报错,建议升级到最新稳定版本。
2. 手动定义Schema(更稳定可控)
如果自动推断不符合预期,或需要更精确的字段类型定义,可以手动创建StructType,再通过schema方法传入,配合enforceSchema强制应用该Schema:
import org.apache.spark.sql.types._ // 示例:手动定义Schema val customSchema = StructType(Array( StructField("col1", StringType, nullable = true), StructField("col2", IntegerType, nullable = true), StructField("col3", DoubleType, nullable = true) )) val df = spark.read .format("excel") .option("sheetNamePattern", section.section_name) .option("cellAddress", section.header_start_pos) .option("headerRowCount", 1) .schema(customSchema) // 传入手动定义的Schema .option("enforceSchema", "true") // 强制应用该Schema .option("orientation","ROW") .load(path)
内容的提问来源于stack exchange,提问作者karti
相关产品推荐
相关产品推荐

