pandasUDFおよびpyarrow 0.15.0


12

最近pyspark、EMRクラスターで実行されている多数のジョブで多数のエラーが発生し始めました。エラーは

java.lang.IllegalArgumentException
    at java.nio.ByteBuffer.allocate(ByteBuffer.java:334)
    at org.apache.arrow.vector.ipc.message.MessageSerializer.readMessage(MessageSerializer.java:543)
    at org.apache.arrow.vector.ipc.message.MessageChannelReader.readNext(MessageChannelReader.java:58)
    at org.apache.arrow.vector.ipc.ArrowStreamReader.readSchema(ArrowStreamReader.java:132)
    at org.apache.arrow.vector.ipc.ArrowReader.initialize(ArrowReader.java:181)
    at org.apache.arrow.vector.ipc.ArrowReader.ensureInitialized(ArrowReader.java:172)
    at org.apache.arrow.vector.ipc.ArrowReader.getVectorSchemaRoot(ArrowReader.java:65)
    at org.apache.spark.sql.execution.python.ArrowPythonRunner$$anon$1.read(ArrowPythonRunner.scala:162)
    at org.apache.spark.sql.execution.python.ArrowPythonRunner$$anon$1.read(ArrowPythonRunner.scala:122)
    at org.apache.spark.api.python.BasePythonRunner$ReaderIterator.hasNext(PythonRunner.scala:406)
    at org.apache.spark.InterruptibleIterator.hasNext(InterruptibleIterator.scala:37)
    at org.apache.spark.sql.execution.python.ArrowEvalPythonExec$$anon$2.<init>(ArrowEvalPythonExec.scala:98)
    at org.apache.spark.sql.execution.python.ArrowEvalPythonExec.evaluate(ArrowEvalPythonExec.scala:96)
    at org.apache.spark.sql.execution.python.EvalPythonExec$$anonfun$doExecute$1.apply(EvalPythonExec.scala:127)...

それらはすべてapplyパンダシリーズの機能で発生するようです。私が見つけた唯一の変更は、pyarrow土曜日(05/10/2019)に更新されたものです。テストは0.14.1で動作するようです

だから私の質問は、これが新しく更新されたpyarrowのバグであるかどうか、またはpandasUDFを将来使用しにくくする重要な変更があるかどうかを誰かが知っているかどうかです。

回答:


15

バグではありません。0.15.0で重要なプロトコル変更を行い、pyarrowのデフォルトの動作をJavaの古いバージョンのArrowと互換性がないようにしました-Spark環境は古いバージョンを使用しているようです。

あなたのオプションは

  • ARROW_PRE_0_15_IPC_FORMAT=1Pythonを使用しているところから環境変数を設定する
  • 現時点では、pyarrow <0.15.0にダウングレードしてください。

うまくいけば、SparkコミュニティがJavaで0.15.0にすぐにアップグレードできるようになるので、この問題は解消されます。

これはhttp://arrow.apache.org/blog/2019/10/06/0.15.0-release/で議論されています

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.