0

我正在从 ORACLE DB 获取数据,我想将其保存在 hbase 中而不使用(convertAvroToJson 和 putHbaseJSON)

从oracle我得到4个这样的属性:a:Text b:Text c:Text d:Binary

有没有办法直接从avro文件中保存这些属性

注意:阻止我使用 JSON 的唯一原因是可能包含 (" 或 ') 的 BINARY 属性

谢谢你。

4

1 回答 1

2

我认为没有办法使用 Apache NiFi 提供的开箱即用处理器来做到这一点。您需要实现一个像 PutHBaseAvro 这样的新处理器,它可以直接从 Avro 到 HBase 突变,并正确处理二进制数据。

有一个 AbstractPutHBase 类可以扩展以更轻松地实现新的 put HBase 处理器:

https://github.com/apache/nifi/blob/e4b7e47836edf47042973e604005058c28eed23b/nifi-nar-bundles/nifi-hbase-bundle/nifi-hbase-processors/src/main/java/org/apache/nifi/hbase/AbstractPutHBase。爪哇

您只需要实现以下方法:

protected abstract PutFlowFile createPut(final ProcessSession session, final ProcessContext context, final FlowFile flowFile);

这会将 FlowFile 的内容读取为 Avro 并转换为 PutFlowFile。

如果您有兴趣从事此工作并将其回馈,那将是 HBase 处理器的一个不错的版本。

于 2016-05-24T16:16:30.130 回答