Я работаю над C++ и пытаюсь уменьшить сетевой трафик Flight RPC, сжимая объект RecordBatch
.
Как лучше всего сделать RecordBatch
компакт? Я обнаружил, что RecordBatch
состоит из Array
. Хорошо ли напрямую сжимать ArrayData
?
С той оговоркой, что в моем собственном тестировании я никогда не обнаруживал, что сжатие существенно помогает, Arrow уже поддерживает сжатие, и это можно включить (с некоторыми ухищрениями), установив параметры IPC.
Например, если у вас есть DoGet, передайте IpcWriteOptions с включенным компрессия в RecordBatchStream. Затем Arrow/Flight сжимает буферы тела для вас, а другой конец (при условии, что он поддерживает сжатие) прозрачно распаковывает их.
Вы можете прочитать обсуждение здесь: Issues.apache.org/jira/browse/ARROW-10351
Спасибо за быстрый ответ. Не могли бы вы пролить свет на тест сжатия после настройки параметров IPC? Удивительно, что DoGet прозрачно распаковывает данные, но будет полезно, если я смогу измерить размер после сжатия.