输入类型必须是字符串类型,但使用Scala在Spark中出现ArrayType(StringType,true)错误

芙蓉

我是Spark的新手,正在使用Scala创建基本分类器。我正在从文本文件中读取数据集,并将其分为训练和测试数据集。然后我试图标记训练数据,但失败了

Caused by: java.lang.IllegalArgumentException: requirement failed: Input type must be string type but got ArrayType(StringType,true).
at scala.Predef$.require(Predef.scala:224)
at org.apache.spark.ml.feature.RegexTokenizer.validateInputType(Tokenizer.scala:149)
at org.apache.spark.ml.UnaryTransformer.transformSchema(Transformer.scala:110)
at org.apache.spark.ml.Pipeline$$anonfun$transformSchema$4.apply(Pipeline.scala:180)
at org.apache.spark.ml.Pipeline$$anonfun$transformSchema$4.apply(Pipeline.scala:180)
at scala.collection.IndexedSeqOptimized$class.foldl(IndexedSeqOptimized.scala:57)
at scala.collection.IndexedSeqOptimized$class.foldLeft(IndexedSeqOptimized.scala:66)
at scala.collection.mutable.ArrayOps$ofRef.foldLeft(ArrayOps.scala:186)
at org.apache.spark.ml.Pipeline.transformSchema(Pipeline.scala:180)
at org.apache.spark.ml.PipelineStage.transformSchema(Pipeline.scala:70)
at org.apache.spark.ml.Pipeline.fit(Pipeline.scala:132)
at com.classifier.classifier_app.App$.<init>(App.scala:91)
at com.classifier.classifier_app.App$.<clinit>(App.scala)
... 1 more

错误。

代码如下:

val input_path = "path//to//file.txt"

case class Sentence(value: String)
val sentencesDS = spark.read.textFile(input_path).as[Sentence]  

val Array(trainingData, testData) = sentencesDS.randomSplit(Array(0.7, 0.3))     

val tokenizer = new Tokenizer()
  .setInputCol("value")
  .setOutputCol("words")

val pipeline = new Pipeline().setStages(Array(tokenizer, regexTokenizer, remover, hashingTF, ovr))
val model = pipeline.fit(trainingData)

我该如何解决?任何帮助表示赞赏。

我已经定义了管道中的所有阶段,但是没有将它们放在代码段中。

芙蓉

更改管道中的执行顺序后,该错误已解决。

val pipeline = new Pipeline().setStages(Array (indexer, regexTokenizer, remover, hashingTF))
val model = pipeline.fit(trainingData) 

标记生成器已替换为regexTokenizer。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Spark - 将包含 JSON 字符串的 coulmn 从 StringType 转换为 ArrayType(StringType())

可空字符串类型提示在 PHP 7.2 中出现语法错误

意外的类型编号预期在Expo Web中出现URI字符串错误

使用字符串格式时出现类型错误

Scala:SPARK UDAF 用于 Scala 中的多项式曲线拟合,出现“类型 (char[]) 无法转换为字符串类型”错误

python pandas - 解析 JSON 时出现类型错误:字符串索引必须是整数

打字稿中出现“类型'()=>字符串[]'缺少类型'字符串[]'的以下属性:弹出,推入,连接,联接和另外25个”错误

类型错误:字符串索引必须是整数(Python)

类型错误:字符串索引必须是带 JSON 的整数

Flask 中的“类型错误:字符串索引必须是整数”

/ 字符串索引处的类型错误必须是整数

类型错误:参数 url 必须是字符串,而不是对象

类型错误:字符串索引必须是整数 django

如何修复“类型错误:字符串索引必须是整数”

字典问题(类型错误:字符串索引必须是整数)

使用jq进行大小写转换时出现错误“爆炸输入必须是字符串”

类型错误:使用带有字符串参数的 itemgetter 时,字符串索引必须是整数

出现类似需要结构类型的错误,但在火花scala中获得了用于简单结构类型的字符串

使用kvm的分子角色是否有很好的例子?到目前为止,出现{'lint':['必须是字符串类型']}错误

在 Scala Spark 流中使用 foreach 时不希望字符串作为类型?

出现错误时返回字符串:类型“Future<dynamic>”不是“String”类型的子类型

为什么我在Scala Spark中出现类型不匹配?

axios“ url”参数必须为字符串类型。收到类型未定义的错误

ytdl()错误:“ url”参数必须为字符串类型。接收类型未定义

如何解决此错误?(此类型必须是数组类型,但解析为字符串)

使用 MongoDB 聚合时出现错误“无法从 BSON 类型 objectId 转换为字符串”

使用[]字符串字段时出现不可比的类型错误(Go lang)

错误:我的代码中出现意外的符号/输入/字符串常量/数字常量/ SPECIAL

“id”参数必须是字符串类型。接收类型对象