2016-06-08 145 views
3

我想從oracle數據庫中使用ExecuteSQL處理器獲取數據。我有一些疑問,例如假設在我的oracle數據庫中有15條記錄。在我運行ExecuteSQL處理器時,它會作爲流連續運行將整個記錄作爲單個文件處理並存儲在HDFS中,並重復執行相同的操作。因此,許多文件將存放在hdfs位置,它將從Oracle數據庫獲取已獲取的記錄,並且這些文件包含相同的數據。這個處理器的運行方式是它必須從oracle db獲取所有數據並將其存儲爲單個文件,並且在將新記錄插入到db中時,它必須將這些記錄攝入到hdfs位置?Apache Nifi ExecuteSQL處理器

回答

3

看看在QueryDatabaseTable處理器:

https://nifi.apache.org/docs/nifi-docs/components/org.apache.nifi.processors.standard.QueryDatabaseTable/index.html

你需要告訴該處理器的一個或多個列用來追蹤新的記錄,這是最大的價值Columns屬性。如果你的表有一個id列,你可以使用它,並且每次運行時它都會跟蹤最後一個被查看的id,並在下一次執行時開始。

+0

我剛剛添加了一篇關於此主題的文章:https://community.hortonworks.com/content/kbentry/51902/incremental-fetch-in-nifi-with-querydatabasetable.html – mattyb