【问题标题】:Python pandas_udf spark errorPython pandas_udf火花错误
【发布时间】:2019-01-13 18:31:43
【问题描述】:

我开始在本地玩 spark 并发现这个奇怪的问题

1) pip install pyspark==2.3.1 2)pyspark> 将熊猫导入为 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,本地主机,执行程序驱动程序):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 更多

【问题讨论】:

    标签: pandas apache-spark pyspark pyarrow


    【解决方案1】:

    我遇到了同样的问题。发现是pandas和numpy的版本问题。

    对我来说,以下作品:

    numpy==1.14.5
    pandas==0.23.4
    pyarrow==0.10.0
    

    在我有以下无效组合之前:

    numpy==1.15.1
    pandas==0.23.4
    pyarrow==0.10.0
    

    【讨论】:

    • 非常感谢,这对我也有用!你是怎么想到的?
    • @sebastian 非常感谢!您是如何找到合适的组合的?
    • 你救了我! :)
    【解决方案2】:

    我发现问题只是 pyarrow 的不兼容版本。 Spark 2.4.0 是使用 pyarrow 0.10.0 (https://issues.apache.org/jira/browse/SPARK-23874) 构建的。

    我将我的 pyarrow 包恢复为 0.10.0(当前版本为 0.15.x),它运行良好。

    适合我的配置是..

    numpy==1.14.3
    pandas==0.23.0
    pyarrow==0.10.0
    

    【讨论】:

      猜你喜欢
      • 2017-07-08
      • 2016-03-30
      • 2020-07-26
      • 1970-01-01
      • 1970-01-01
      • 2018-06-19
      • 1970-01-01
      • 2018-02-27
      • 2017-11-24
      相关资源
      最近更新 更多