2012-03-23 16 views
0

我正在使用Hive。我已經在其中實現了一些任務,並希望使用SQOOP將Hive中的表導出到SQL Server中。如何使用SQOOP從HIVE導出數據後觸發SQL Server中的觸發器

當表從Hive中導出時我想在SQL Server中觸發觸發器。可以觸發觸發器嗎?

請儘快給我回復。

謝謝。

+0

您不能*觸發SQL Server中的觸發器 - 它將通過它所屬的表上的某個操作觸發。當你有一個INSERT觸發器並且你運行一個INSERT語句時,觸發器將被執行。但是沒有辦法*觸發除觸發器之外觸發的「觸發」 – 2012-03-23 05:56:57

+0

我不理解你的問題,或者爲什麼SQOOP是相關的。你問如何觸發一個觸發器而不改變任何數據? – Pondlife 2012-03-23 08:19:57

+0

當數據從Hive導出到SQL中時,它是否在SQL表中得到INSERTED/LOADED?如果它是這樣的(INSERTED/LOADED),那麼我們能夠觸發觸發器嗎? – 2012-03-26 05:09:34

回答

0

我剛剛嘗試通過創建觸發器,它工作正常! 這使我的工作變得如此簡單。

我在AFTER INSERT後創建了觸發器。

1

作爲一個規則,避免觸發像瘟疫。他們是最後的手段。任何可以在觸發器中完成的事情都可以在存儲過程中更好更快地完成一千次,這就是業務邏輯應該是可見的,可以優化並且在源代碼控制下更容易理解的地方。觸發器是數據庫世界的全局變量,除非沒有其他技術解決方案才能避免。

如果你希望從你的SQL Server中獲得更好的性能,並且你使用Hive來獲得它,那麼你的方式會錯誤 - 你最好將業務邏輯轉移到存儲過程中可以調整,而不是將其嵌入觸發器中。

使用Hive解決問題是一個真正的大錘破解核桃 - 你會更好地看着你的編碼實踐,以獲得更好的SQL Server性能,除非你的數據集如此龐大(100Tb +),你真的需要轉向基於Hadoop和Hive的分佈式擴展解決方案。問問你自己爲什麼這樣做。要在任何較小的數據集上這樣做,實際上就是無視關於什麼關係引擎能夠在相對適中的硬件上運行。我們都會用新技術來詮釋我們的簡歷,或者想要新的東西來玩,但在技術架構方面,您應該問自己是否有必要。我不是反SQL Server,也不是我的反Hive/Hadoop。兩人都有他們的地方,馬匹的課程。但我絕對是反觸發的。