【问题标题】:What's the best approach to load teradata table data into a hive table using Nifi?使用 Nifi 将 teradata 表数据加载到配置单元表中的最佳方法是什么?
【发布时间】:2019-01-11 02:23:51
【问题描述】:
我是 Nifi 的新手,您能否帮助我了解这个平台及其功能。
我是否可以使用 Nifi 进程在 Hive 中创建一个新表,并按照我在下面定义的方式每周将数据从 teradata 数据库移入其中?
我该怎么办?不确定我是否正在建立一个合理的流程。
以下过程是否足够:QueryDatabaseTable(并为 teradata 配置池服务并定义新表名和计划摄取)--> PutHiveStreaming(创建定义的表较早)
然后如何将 teradata 架构拉入新表?
【问题讨论】:
标签:
hive
teradata
apache-nifi
【解决方案1】:
如果您想在摄取过程中创建新的配置单元表,那么
方法一:
使用 ConvertAvroToOrc 处理器将 hive.ddl(external table) 属性添加到流文件中,因为我们可以使用此属性并使用 PutHiveQL 处理器执行,然后我们就可以在 hive 中创建表。
如果要创建事务表则需要更改 hive.ddl 属性。
有关详细信息,请参阅this 链接。
如果您只想从源中提取增量记录,那么您可以使用
ListDatabaseTables(列出源数据库中的所有表)+ GenerateTableFetch(存储状态)处理器
流程:
方法2:
QuerydatabaseTable 处理器将生成 Avro 格式的流文件,然后您可以使用 ExtractAvroMetaData 处理器通过使用我们可以创建的一些脚本来提取 avro 架构具有所需架构的新属性(即托管/外部/事务表)。