gấu trúc và pyarrow 0.15.0


12

Gần đây tôi đã bắt đầu nhận được một loạt lỗi về một số pysparkcông việc đang chạy trên các cụm EMR. Các erro là

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)...

Tất cả chúng dường như xảy ra trong các applychức năng của một loạt gấu trúc. Thay đổi duy nhất tôi tìm thấy là pyarrowđã được cập nhật vào Thứ Bảy (05/10/2019). Các xét nghiệm dường như hoạt động với 0.14.1

Vì vậy, câu hỏi của tôi là nếu có ai biết nếu đây là một lỗi trong pyarrow được cập nhật mới hoặc có một số thay đổi đáng kể sẽ làm cho pandasUDF khó sử dụng trong tương lai?

Câu trả lời:


15

Đó không phải là một lỗi. Chúng tôi đã thực hiện một thay đổi giao thức quan trọng trong 0.15.0, khiến hành vi mặc định của pyarrow không tương thích với các phiên bản cũ hơn của Arrow trong Java - môi trường Spark của bạn dường như đang sử dụng phiên bản cũ hơn.

Lựa chọn của bạn là

  • Đặt biến môi trường ARROW_PRE_0_15_IPC_FORMAT=1từ nơi bạn đang sử dụng Python
  • Hạ cấp xuống pyarrow <0.15.0 ngay bây giờ.

Hy vọng cộng đồng Spark sẽ sớm có thể nâng cấp lên 0.15.0 trong Java để vấn đề này không còn nữa.

Điều này được thảo luận trong http://arrow.apache.org/blog/2019/10/06/0.15.0-release/

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.