我使用NiFi到Oracle(11克)数据库表传送到HDFS(阿夫罗格式)所有字段。甲骨文+ NiFi =>转换为字符串
出了差错与AVRO列的分型:他们都被定义为字符串,即使甲骨文TableColumn的是另一种类型的数字一样,日期时间的时间戳的。显然,这是恼人的:-)
一些google搜索后,我发现建议,在某些Oracle JDBC驱动程序的组合和转换器的Avro存在的问题。但是,我找不到合适的解决方案;有没有人知道要使用什么JDBC(或其他?)驱动程序来正确输入Avro输出?
我使用NiFi到Oracle(11克)数据库表传送到HDFS(阿夫罗格式)所有字段。甲骨文+ NiFi =>转换为字符串
出了差错与AVRO列的分型:他们都被定义为字符串,即使甲骨文TableColumn的是另一种类型的数字一样,日期时间的时间戳的。显然,这是恼人的:-)
一些google搜索后,我发现建议,在某些Oracle JDBC驱动程序的组合和转换器的Avro存在的问题。但是,我找不到合适的解决方案;有没有人知道要使用什么JDBC(或其他?)驱动程序来正确输入Avro输出?
我发现意外的行为的解释:
换句话说,似乎我不得不等待下一个版本解决此问题。
我没有经验使用Oracle说哪个司机的工作,但为了它NiFi正常工作的驱动程序具有使用ResultSetMetadata来获取列类型支持:
听起来你正在使用的驱动程序是为每一列返回字符串。
如果驱动程序按照Bryan的建议(或NiFi将其视为字符串的未知类型)作为每个列的类型返回“string”,那么如果您知道期望的列类型,对于原始类型转换(字符串, long,int,double,float)你可以试试ConvertAvroSchema处理器。
对于日期/时间字段,取决于您想要对它们做什么,NiFi表达式语言中有一些Date Manipulation functions可以帮助您处理它们。
感谢您的输入。但是,您建议的是(不可持续的)解决方法。 –
是的,我是在暗示一种变通方法,直到https://issues.apache.org/jira/browse/NIFI-2624实现。 – mattyb