【发布时间】:2019-05-14 09:17:07
【问题描述】:
目前我正在使用 ConsumeKafkaRecord、Merge Content 和 PutHDFS 将数据从 kafka 加载到 Hive。我们需要为多个 kafka 主题自动执行此操作。有没有办法在nifi中做到这一点。
例如:如果我将主题名称指定为 abc,xyz,则来自 abc 主题的数据应移至 /abc,而来自 xyz 的数据应移至 /xyz 文件夹。
请提出建议。
【问题讨论】:
目前我正在使用 ConsumeKafkaRecord、Merge Content 和 PutHDFS 将数据从 kafka 加载到 Hive。我们需要为多个 kafka 主题自动执行此操作。有没有办法在nifi中做到这一点。
例如:如果我将主题名称指定为 abc,xyz,则来自 abc 主题的数据应移至 /abc,而来自 xyz 的数据应移至 /xyz 文件夹。
请提出建议。
【问题讨论】:
ConsumeKafkaRecord 处理器写入一个名为 kafka.topic 的属性,其中包含记录所在主题的名称。
并且PutHDFS的目录参数支持表达式语言。
所以,您可以在其中指定 /${kafka.topic} 之类的内容
【讨论】:
关于问题的第二部分,您可以基于“kafka.topic”属性合并文件(使用mergeContent)。这样,您可以使用一个处理器合并不同主题的内容。 (每个主题的数据只会与该特定主题的数据合并)
然后,您可以通过将路径称为“hdfs://${your-hdfs-path}/${kafka.topic}”将文件路由到 HDFS 中的不同目录
如果您需要更多帮助,请告诉我!
【讨论】: