Как исправить «CodecNotFoundException: кодек не найден для запрошенной операции: [blob <-> java.lang.String]» при записи в Cassandra в Streamsets - PullRequest
0 голосов
/ 14 июня 2019

Я пытаюсь перенести таблицу 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)
...