Spark使用VectorAssembler时:IllegalArgumentException: Data type StringType is not supported

在使用Spark的VectorAssembler时遇到IllegalArgumentException错误,问题源于数据类型不被支持。作者发现数据类型意外转为String,通过打印Schema发现所有字段变为String。解决方案是设置Spark读取CSV时的选项,包括不添加默认列名和自动推断数据类型。最终通过`option("header", true)`和`option("inferSchema", true)`修复问题。" 126933793,15468797,SSM汽车租赁系统毕业设计,"['Java', '汽车租赁系统', 'SSM框架', '毕业设计', '数据库设计']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我的处理顺序:

  1. 因为我在另外一个scala文件中已经将csv分割为了训练集和测试集,并且为了后续计算各个filed之间的相关系数而把所有filed的类型都已经改为了Double型,所以我就没有考虑我的数据会有问题。
  2. 所以我怀疑是文件第一行的列名在搞鬼,然后我就去除了文件的第一行:然后:org.apache.hadoop.fs.ChecksumException: Checksum error
  3. 读取调用hadoop的API生成的文件,系统会检查文件是否“损坏”
  4. 复制粘贴后删除第一行再试,发觉还是报错
  5. 看源码,发觉VectorAssembler处理数据类型时最开始不会理睬第一行,仅仅在所有数据类型都case匹配不到时才会去做一些与第一行有关的操作。我不得不怀疑下filed的数据类型
    这里写图片描述
  6. printSchema发现:所有filed的类型又变成了string。。。我靠!这么不智能?还是说我操作失误?我认为Spark按道理还是能检测出数据类型的啊(194201.0, 378.0, 831.0, 2.0, 2.0, 3.0, 6.0些都理解为String?
  7. 我不可能再去转换一次,那样太傻逼了,肯定有别的办法
  8. 加上mark标记的内容
    val rawTrainDf = spark.read.format(“csv”).option(“header”,true).option(“inferSchema”, t
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值