私はScalaで次のSparkコードを持っています。私はPysparkに変換したいと思います。 Pythonにはcase class
がありません。私はいくつかのことを試しましたが、何も働かなかったのです。 predictions
は、Dataframeです。私が直面している問題は、vector要素を含む確率列をキャストすることです。DataFrameを別のDataFrameに変換する際のエラー
case class R(probability: Double, label: Double)
val predictionsC = predictions.select("probability", "label")
.rdd
.map(x => R(x(0).asInstanceOf[org.apache.spark.mllib.linalg.Vector].apply(1),
x(1).asInstanceOf[Double]))
.toDF
私は、次のコードを試してみましたが、それは
prunedPredictions = predictions.select(predictions["probability"], predictions["label"])
predictionsC = prunedPredictions.map(lambda r: Row(prediction = r[0],probability = r[1][1]))
改訂動作しません:
私は--py-filesオプションを使用してnumpyのライブラリを追加し、今私は取得しています次のエラーメッセージ。
File "/usr/lib/spark/python/lib/py4j-0.8.2.1-src.zip/py4j/protocol.py", line 300, in get_return_value
py4j.protocol.Py4JJavaError: An error occurred while calling z:org.apache.spark.api.python.PythonRDD.runJob.
: org.apache.spark.SparkException: Job aborted due to stage failure: Task 0 in stage 232.0 failed 4 times, most recent failure: Lost task 0.3 in stage 232.0 (TID 60801, anp-r01wn02.c03.hadoop.td.com): org.apache.spark.SparkException:
Error from python worker:
/usr/bin/python: No module named mtrand
PYTHONPATH was:
/usr/lib/spark/lib/spark-assembly-1.5.0-cdh5.5.1-hadoop2.6.0-cdh5.5.1.jar:/usr/lib/spark/python/lib/py4j-0.8.2.1-src.zip:/usr/lib/spark/python/::/usr/lib/spark/python/lib/py4j-0.8.2.1-src.zip:/usr/lib/spark/python/lib/pyspark.zip:/data/10/yarn/nm/usercache/zakerh2/appcache/application_1462889699566_2857/container_e37_1462889699566_2857_01_000332/numpy.zip
java.io.EOFException
at java.io.DataInputStream.readInt(DataInputStream.java:392)
at org.apache.spark.api.python.PythonWorkerFactory.startDaemon(PythonWorkerFactory.scala:163)
at org.apache.spark.api.python.PythonWorkerFactory.createThroughDaemon(PythonWorkerFactory.scala:86)
at org.apache.spark.api.python.PythonWorkerFactory.create(PythonWorkerFactory.scala:62)
at org.apache.spark.SparkEnv.createPythonWorker(SparkEnv.scala:135)
at org.apache.spark.api.python.PythonRDD.compute(PythonRDD.scala:73)
at org.apache.spark.rdd.RDD.computeOrReadCheckpoint(RDD.scala:297)
at org.apache.spark.rdd.RDD.iterator(RDD.scala:264)
at org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:66)
at org.apache.spark.scheduler.Task.run(Task.scala:88)
at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:214)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
probability = r[1][1]
はdouble型です。このエラーメッセージはどのようなものでしょうか?
どのように私は私のコードであること使用できますか?問題は、上記のマップ関数で '' prediction = r [0] [0] ''のようなものがあると、エラーが発生します。 –
エラーは何ですか? – zero323
[this](http://stackoverflow.com/q/37150596/1560062)を意味しますか?それは依存関係の問題であり、キャストすることは何もありません。 mllib型を使用するには、すべてのノードでnumpyにアクセス可能である必要があります。 – zero323