NIFI:使用kafka并将数据存储到hive的正确方法



我的任务是创建kafka消费者,它应该从kafka中提取消息,从中提取消息并存储到Hive表中。

因此,在 kafka 主题中,有很多消息作为 json 对象。

我喜欢添加一些字段并将其插入到蜂巢中。

我使用以下 Nifi 处理器创建流:

  1. ConsumeKafka_2_0
  2. JoltTransformJSON - for transform json
  3. 转换记录 - 将 json 转换为 Hive 的插入查询
  4. PutHiveQL

该主题将充分加载并每天处理大约 5Gb 的数据。

那么,有什么方法可以优化我的流(我认为向 Hive 提供大量插入查询是个坏主意(?也许使用外部表和 putHDFS 处理器会更好(这样如何使用分区并将输入 json 合并到一个文件中?

正如你所怀疑的,使用 PutHiveQL 来执行大量单独的 INSERT 并不是很高性能。使用外部表方法可能会好得多。如果表采用 ORC 格式,则可以使用 ConvertAvroToORC(适用于 Hive 1.2(或 PutORC(适用于 Hive 3(,它们都生成 Hive DDL 来帮助创建外部表。

还有Hive流处理器,但如果你使用的是Hive 1.2,PutHiveStreaming的性能也不是很好(但应该仍然比带有INSERTs的PutHiveQL更好(。对于Hive 3,PutHive3Streaming的性能应该更高,是我推荐的解决方案。

相关内容

  • 没有找到相关文章

最新更新