Можно ли использовать клиент Python Aerospike для чтения данных BLOB, вставленных с помощью клиента JAVA
Всякий раз, когда я использую query.results()
на мой запрос для данных вышеупомянутого блоба я получаю пустой массив, query.foreach(dummy)
при фиктивном обратном вызове возникает ошибка сегментации, двоичный объект данных был вставлен с использованием клиента JAVA без настраиваемой сериализации
2 ответа
Когда вы пишете данные BLOB-объектов с использованием Java, если вы используете байтовый массив в качестве типа bin, вы должны иметь возможность читать его на python. Если вы создаете бин с Object
datatype, Java-сериализатор будет использоваться для написания BLOB-объекта. Вы не можете достичь такого блоба в python.
Aerospike имеет список поддерживаемых типов данных, который в настоящее время является целым, двойным, строковым, байтов (blob), список, карта, geoJSON. Типы родного языка будут отображаться непосредственно в поддерживаемые типы и из поддерживаемых типов, поэтому в Python клиент преобразует str в as_string, int в as_integer, float в as_double и т. Д.
Клиент Python будет сериализовывать BLOB- объекты и выходить из них в виде байтовой матрицы. Клиент Java должен использовать метод Bin.asBlob() перед записью записи.