我是Scala的新手,我很難編寫spark-sql應用程序來動態加載用戶類並將rdds映射到它。使用Scala反射來創建其聲明類的對象
rdd.map(line => {
val cls = Class.forName("UserClass")
val constructor = cls.getConstructor(classOf[String], classOf[String])
Tuple1(constructor.newInstence(line._1, line._2)).asInstanceOf[cls.type]
}).toDF()
問題是將對象轉換爲其聲明的類,因爲cls.type返回不是預期的java.lang.class [_]。在運行時,會拋出以下異常:
java.lang.UnsupportedOperationException: Schema for type java.lang.class[_] is not supported
順便說一句,我正在使用Scala 2.10和spark 1.6.1。
任何意見和建議,將不勝感激!謝謝!
編譯和/或運行此代碼時會發生什麼?你期望發生什麼? –
感謝您的注意,我添加了異常消息。我只是期望該對象是其聲明的類,而不是任何或類[T]。 –
我真的很好奇你想用這種方法解決什麼樣的問題。你能解釋你的要求嗎? – maasg