我使用NiFi摄取包含Avro记录的流文件,并需要将它们插入HBase。这些流文件的大小各不相同,但有些还有10,000,000条以上的记录。我使用SplitAvro两次(一次拆分为10,000次rec,然后一次拆分为1次rec),然后使用ExecuteScript处理器为HBase提取行密钥并将其添加为flowfile属性。最后我使用PutHBaseCell(批量大小为10,000)使用行键属性写入HBase ..
将Avro拆分为1 rec的处理器非常慢(并发任务设置为5)。 有没有办法加快速度?是否有更好的方法将此Avro数据加载到HBase中?
(我使用的是2节点NiFi(v1.2)群集(由VM制作),每个节点有16个CPU和16GB RAM。)
答案 0 :(得分:1)
有一个新的PutHBaseRecord处理器将成为下一个版本的一部分(现在有1.4.0版本被投票)。
使用此处理器,您可以避免拆分流文件,只需将数百万Avro记录发送到PutHBaseRecord的流文件,并使用Avro读取器配置PutHBaseRecord。
使用这种方法可以获得更好的性能。