-1
私はデータフレームを返すUDFを持っています。私は、コマンドApache Spark - UDFを登録する - データフレームを返す
hiveContext.udf.register("predict_churn", outerpredict _)
を使用してUDFとしてこれを登録しようとすると、
scala> predict_churn(Vectors.dense(2.0,1.0,0.0,3.0,4.0,4.0,0.0,4.0,5.0,2.0))
res3: org.apache.spark.sql.DataFrame = [noprob: string, yesprob: string, pred: string]
scala> predict_churn(Vectors.dense(2.0,1.0,0.0,3.0,4.0,4.0,0.0,4.0,5.0,2.0)).show
+------------------+------------------+----+
| noprob| yesprob|pred|
+------------------+------------------+----+
|0.3619977592578127|0.6380022407421874| 1.0|
+------------------+------------------+----+
以下のようなものがしかし、私は
java.lang.UnsupportedOperationException: Schema for type org.apache.spark.sql.DataFrame is not supported
at org.apache.spark.sql.catalyst.ScalaReflection$class.schemaFor(ScalaReflection.scala:715)
がサポートされていないデータフレームを返しているようなエラーが発生します。私はSpark 1.6.1とScala 2.10を使用しています。これがサポートされていない場合、どうすれば複数の列を外部プログラムに返すことができますか。
おかげ
バラ
ご返信ありがとうございます。 あなたから提案された解決策を試しました。これは私がやったことある 'ケースクラス度Prob次のように私の場合、クラスがある(noprob:文字列、yesprob:文字列、predは:文字列)'関数で 'ヴァルOP = result.mapた(p =>をPROB(P(0).toString、P(1).toString、P(2).toString)) OP //出力としてオペアンプを返す 私は非常に類似したエラーを取得したとしても、この後 ' **スケーラ> hiveContext.udf.register( "predict_churn"、outerpredict _) java.lang.UnsupportedOperationException:タイプorg.apache.spark.rdd.RDDのスキーマ[Prob]はサポートされていません ** 何が間違っていますか。 –
変更されたUDFが_RDD_を返していますか?それは私が意味するものではない、それはちょうど_Record_ –
を返す必要があります申し訳ありませんが、私は正しい構文が得られていません。どのように私は、変換することができます 'スカーラ>結果 res13:org.apache.spark.sql.DataFrame =タイプ 'ケースクラスのケースクラスへの[noprob:文字列、yesprob:文字列、predを文字列] ' –