我使用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