Я пытаюсь перенести таблицу Oracle на Cassandra, используя Streamsets. Поскольку в их документе говорится, что сопоставление полей по умолчанию недоступно для типов BLOB-объектов в Cassandra, я пытаюсь использовать сценарий Jython Evaluator для преобразования поля BLOB вручную. Но я получаю "CodecNotFoundException: кодек не найден для запрошенной операции: [blob <-> java.lang.String]"
Ниже приведены моя схема таблицы Oracle и соответствующая схема Cassandra.
CREATE TABLE SCHEMA1.TABLE1
(
ID RAW(16) NOT NULL,
CREATED_DATE TIMESTAMP(6),
TYPE VARCHAR2(255 CHAR),
DETAILS BLOB
)
CREATE TABLE schema1.table1 (
id uuid,
created_date_timestamp timestamp,
type text,
details blob,
PRIMARY KEY (id)
)
Ниже приведен фрагмент кода, присутствующий в сценарии Jython.
try:
import uuid
from java.nio import ByteBuffer
for record in records:
record.value['DETAILS'] = ByteBuffer.wrap(bytearray(record.value['DETAILS']))
output.write(record)
except Exception as e:
for record in records:
error.write(record, e.message)