我使用NiFi将Oracle(11g)数据库表格转换为HDFS(Avro格式)。
AVRO列的输入出了问题:它们都被定义为String,即使Oracle表列是另一种类型,如Numeric,Timestamp of Datetime。显然,这很烦人: - )
经过一些谷歌搜索后,我发现有些问题存在于某些Oracle JDBC驱动程序和转换器与Avro的组合中。但是,我找不到合适的解决方案;有没有人知道使用什么JDBC(或其他?)驱动程序才能在Avro输出中正确输入?
答案 0 :(得分:2)
如果司机正在返回"字符串"作为Bryan建议的每列的类型(或NiFi视为字符串的未知类型),如果您知道预期的列类型,对于基本类型转换(字符串,long,int,double,float),您可以尝试ConvertAvroSchema处理器。
对于日期/时间字段,根据您对它们的喜好,NiFi表达式语言中有一些Date Manipulation functions可以帮助您处理它们。
答案 1 :(得分:1)
我没有使用Oracle来说明哪个驱动程序有效,但为了在NiFi中正常工作,驱动程序必须支持使用ResultSetMetaData来获取列类型:
听起来你正在使用的驱动程序是为每列返回字符串。
答案 2 :(得分:0)
我找到了意外行为的解释:
换句话说,似乎我必须等待修复此问题的下一个版本。