pandasUDF и пиарроу 0.15.0 - PullRequest
       52

pandasUDF и пиарроу 0.15.0

5 голосов
/ 07 октября 2019

Недавно я начал получать кучу ошибок на ряде 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 было обновлено в субботу (10/10/2019). Похоже, что тесты работают с 0.14.1

Так что мой вопрос: кто-нибудь знает, если это ошибка в новом обновленном pyarrow или есть какие-то существенные изменения, которые затруднят использование pandasUDF в будущем?

1 Ответ

7 голосов
/ 07 октября 2019

Это не ошибка. Мы внесли важное изменение в протокол 0.15.0, которое делает поведение pyarrow по умолчанию несовместимым со старыми версиями Arrow в Java - кажется, что ваша среда Spark использует более старую версию.

Вы можете выбрать

  • Установите переменную окружения ARROW_PRE_0_15_IPC_FORMAT=1, из которой вы используете Python
  • Понизьте до pyarrow <0.15.0 сейчас. </li>

Надеемся, что сообщество Spark скоро сможет обновить Java до 0.15.0, поэтому эта проблема исчезнет.

Это обсуждается в http://arrow.apache.org/blog/2019/10/06/0.15.0-release/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...