pandasUDF와 pyarrow 0.15.0


12

최근 pysparkEMR 클러스터에서 실행 되는 여러 작업에서 많은 오류가 발생하기 시작했습니다 . 침식은

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토요일 (2019 년 10 월 10 일)에 업데이트되었다는 것입니다. 테스트는 0.14.1에서 작동하는 것 같습니다

그래서 내 질문은 이것이 새로운 업데이트 된 pyarrow의 버그인지 아는 사람이거나 나중에 pandasUDF를 사용하기 어려운 중대한 변화가 있습니까?

답변:


15

버그가 아닙니다. 우리는 pyarrow의 기본 동작이 Java의 이전 버전의 Arrow와 호환되지 않도록 0.15.0에서 중요한 프로토콜을 변경했습니다 .Spark 환경은 이전 버전을 사용하는 것 같습니다.

당신의 옵션은

  • ARROW_PRE_0_15_IPC_FORMAT=1파이썬을 사용하는 곳 에서 환경 변수 를 설정하십시오.
  • 현재 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.