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 เข้ากันไม่ได้กับ Arrow รุ่นเก่าใน Java - สภาพแวดล้อม Spark ของคุณดูเหมือนว่าจะใช้รุ่นเก่ากว่า

ตัวเลือกของคุณคือ

  • ตั้งค่าตัวแปรสภาพแวดล้อมARROW_PRE_0_15_IPC_FORMAT=1จากตำแหน่งที่คุณใช้งาน Python
  • ปรับลดรุ่นเป็น pyarrow <0.15.0 ในตอนนี้

หวังว่าชุมชน Spark จะสามารถอัปเกรดเป็น 0.15.0 ใน Java ในไม่ช้าดังนั้นปัญหานี้จะหายไป

สิ่งนี้ถูกกล่าวถึงในhttp://arrow.apache.org/blog/2019/10/06/0.15.0-release/

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.