私はScalaには新しく、spark-SQLアプリケーションを作成して動的にユーザクラスをロードし、それにrddをマップするのは難しいです。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 [_]、として、その宣言されたクラスオブジェクトに変換されます。実行時に次の例外がスローされます。012Wを使用していますが、Scala 2.10とspark 1.6.1を使用しています。
ご意見やご感想をお寄せください。ありがとう!
このコードをコンパイルまたは実行するとどうなりますか?そして、あなたは何が起こると思いますか? –
通知ありがとう、私は例外メッセージを追加しました。私は、オブジェクトが宣言されたクラスであることを期待しています。AnyまたはClass [T]ではありません。 –
私はこのアプローチを使ってどのような問題を解決しようとしているのでしょうか?あなたの要件を説明できますか? – maasg