当前位置: 首页 > 知识库问答 >
问题:

引发ClassCastException的

燕飞文
2023-03-14

我需要创建自己的UnaryTransformer实例,该实例接受类型为Array[String]的Dataframe列,并且还应该输出相同的类型。在尝试这样做时,我在Spark版本2.1.0上遇到了ClassCastException。我做了一个样本测试来证明我的情况。

import org.apache.spark.SparkConf
import org.apache.spark.ml.UnaryTransformer
import org.apache.spark.ml.util.Identifiable
import org.apache.spark.sql.SparkSession
import org.apache.spark.sql.types.{ArrayType, DataType, StringType}

class MyTransformer(override val uid:String) extends UnaryTransformer[Array[String],Array[String],MyTransformer] {
  override protected def createTransformFunc: (Array[String]) => Array[String] = {
    param1 =>  {
        param1.foreach(println(_))
      param1
    }
  }

  override protected def outputDataType: DataType = ArrayType(StringType)

  override protected def validateInputType(inputType: DataType): Unit = {
    require(inputType == ArrayType(StringType), s"Data type mismatch between Array[String] and provided type $inputType.")
  }

  def this() = this( Identifiable.randomUID("tester") )
}


object Tester {



  def main(args: Array[String]): Unit = {

     val config =  new SparkConf().setAppName("Tester")

     implicit val sparkSession = SparkSession.builder().config(config).getOrCreate()
     import sparkSession.implicits._

     val dataframe = Seq(Array("Firstly" , "F1"),Array("Driving" , "S1" ),Array("Ran" , "T3" ),Array("Fourth" ,"F4"), Array("Running" , "F5")
       ,Array("Gone" , "S6")).toDF("input")



    val transformer = new MyTransformer().setInputCol("input").setOutputCol("output")

    val transformed = transformer.transform(dataframe)

    transformed.select("output").show()

    println("Complete....")

    sparkSession.close()


  }

}

附加堆栈跟踪以供参考

共有1个答案

佟涵畅
2023-03-14

arraytype表示为seq而不是array:

override protected def createTransformFunc: (Seq[String]) => Seq[String] = {
  param1 =>  {
      param1.foreach(println(_))
    param1
  }
}
 类似资料:
  • 我一直在开发这个简单的Java程序,在某种程度上它抛出了一个“ClassCastException”,我不知道为什么。程序中发生的事情是,它读取2个文本文件,并将它们存储在对象数组列表中(因为我使用相同的方法读取这两个文件) 稍后,当我尝试将这些对象转换为我创建的自定义数据类型时,程序会抛出此错误。我做错了什么? } ^^这需要与员工相关的菜单。 ^^这就是我得到异常的地方,就在“客户客户=(客户

  • 这是一个面试问题。 面试结束了,但这个问题仍然在我脑海里。 我不能问面试官,因为我没有得到这份工作。 脚本: 将类C1的对象放入具有键“a”的缓存中 后代码: 此代码引发ClassCastException。 原因是什么? 我说是因为别人用同样的键放了另一个对象,所以覆盖了它。我被告知不,想想其他可能性。 我说定义类C1的jar可能在此节点上不可用(不确定这是否会导致类强制转换或类NotFound

  • 如果从Fragment调用,我的DialogFragment会抛出ClassCastException,而如果从Activity调用,则会正常工作。我已经看了很少的其他问题与类似的问题,基本上是与进口有关的,但我没有能够解决在我的实现。下面是我对DialogFragment的实现。 下面是我使用上面的DialogFragment的片段: 这是错误日志: 我想知道有没有人能给出一个关于这个问题的提示

  • 问题内容: 当我调用并将其强制转换为该异常时。 抛出它的代码: 但是,并非每次都这样做。在大多数情况下,它运行正常,但在其他时候,它会抛出此异常。我不明白为什么会这样。我有什么办法可以阻止这种情况的发生? 问题答案: 您不应假定它是DefaultListModel。使用接口ListModel。JList返回ListModel的内部实现。 如果需要访问基础模型,则应创建它,在JList构造函数中进行

  • 我正在将Weblogic server从9升级到10.3.6。当我试图部署我的ear应用程序时,出现以下异常。 我尝试了各种各样的方法,包括添加一个weblogic应用程序.xml但它仍然不起作用。 我的weblogic.xml 这是我的pom.xml的一部分: 请帮帮忙。谢谢!

  • 我正在尝试创建一个“简单”的一个或多个或多个的关系。我得到以下例外情况: 有人能告诉我我做错了什么吗? 下面你可以找到我的两个实体。 提前谢谢你。 而且