私はローカルでスパークをいじり始め、この奇妙な問題を見つけました
1) pip install pyspark==2.3.1 2) ピスパーク> パンダを pd としてインポート pyspark.sql.functions から pandas_udf、PandasUDFType、udf をインポート df = pd.DataFrame({'x': [1,2,3], 'y':[1.0,2.0,3.0]}) sp_df = spark.createDataFrame(df) @pandas_udf('long', PandasUDFType.SCALAR) def pandas_plus_one(v): v + 1 を返す sp_df.withColumn('v2', pandas_plus_one(sp_df.x)).show()
ここからこの例を取るhttps://databricks.com/blog/2017/10/30/introducing-vectorized-udfs-for-pyspark.html
このエラーが発生し続ける理由は何ですか?
py4j.protocol.Py4JJavaError: o108.showString の呼び出し中にエラーが発生しました。 : org.apache.spark.SparkException: ステージの失敗によりジョブが中止されました: ステージ 3.0 のタスク 0 が 1 回失敗しました。最近の失敗: ステージ 3.0 でタスク 0.0 が失われました (TID 8、localhost、executor ドライバー): org.apache.spark .SparkException: Python ワーカーが予期せず終了しました (クラッシュしました) org.apache.spark.api.python.BasePythonRunner$ReaderIterator$$anonfun$1.applyOrElse(PythonRunner.scala:333) で org.apache.spark.api.python.BasePythonRunner$ReaderIterator$$anonfun$1.applyOrElse(PythonRunner.scala:322) で scala.runtime.AbstractPartialFunction.apply(AbstractPartialFunction.scala:36) で org.apache.spark.sql.execution.python.ArrowPythonRunner$$anon$1.read(ArrowPythonRunner.scala:177) で org.apache.spark.sql.execution.python.ArrowPythonRunner$$anon$1.read(ArrowPythonRunner.scala:121) で org.apache.spark.api.python.BasePythonRunner$ReaderIterator.hasNext (PythonRunner.scala:252) で org.apache.spark.InterruptibleIterator.hasNext(InterruptibleIterator.scala:37) で org.apache.spark.sql.execution.python.ArrowEvalPythonExec$$anon$2 で。(ArrowEvalPythonExec.scala:90) org.apache.spark.sql.execution.python.ArrowEvalPythonExec.evaluate (ArrowEvalPythonExec.scala:88) で org.apache.spark.sql.execution.python.EvalPythonExec$$anonfun$doExecute$1.apply(EvalPythonExec.scala:131) で org.apache.spark.sql.execution.python.EvalPythonExec$$anonfun$doExecute$1.apply(EvalPythonExec.scala:93) で org.apache.spark.rdd.RDD$$anonfun$mapPartitions$1$$anonfun$apply$23.apply(RDD.scala:800) で org.apache.spark.rdd.RDD$$anonfun$mapPartitions$1$$anonfun$apply$23.apply(RDD.scala:800) で org.apache.spark.rdd.MapPartitionsRDD.compute (MapPartitionsRDD.scala:38) で org.apache.spark.rdd.RDD.computeOrReadCheckpoint (RDD.scala:324) で org.apache.spark.rdd.RDD.iterator(RDD.scala:288) で org.apache.spark.rdd.MapPartitionsRDD.compute (MapPartitionsRDD.scala:38) で org.apache.spark.rdd.RDD.computeOrReadCheckpoint (RDD.scala:324) で org.apache.spark.rdd.RDD.iterator(RDD.scala:288) で org.apache.spark.rdd.MapPartitionsRDD.compute (MapPartitionsRDD.scala:38) で org.apache.spark.rdd.RDD.computeOrReadCheckpoint (RDD.scala:324) で org.apache.spark.rdd.RDD.iterator(RDD.scala:288) で org.apache.spark.rdd.MapPartitionsRDD.compute (MapPartitionsRDD.scala:38) で org.apache.spark.rdd.RDD.computeOrReadCheckpoint (RDD.scala:324) で org.apache.spark.rdd.RDD.iterator(RDD.scala:288) で org.apache.spark.scheduler.ResultTask.runTask (ResultTask.scala:87) で org.apache.spark.scheduler.Task.run (Task.scala:109) で org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:345) で java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1142) で java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) で java.lang.Thread.run(Thread.java:745) で 原因: java.io.EOFException java.io.DataInputStream.readInt(DataInputStream.java:392) で org.apache.spark.sql.execution.python.ArrowPythonRunner$$anon$1.read(ArrowPythonRunner.scala:158) で ... 27以上