sqoop從mysql導數據到hive報錯:Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure


背景

使用sqoop從mysql導數據到hive,從本地服務器是可以訪問mysql的(本地服務器是hadoop集群的一個datanode),但是sqoop導數據的時候依然連接不上mysql

報錯如下:

從報錯可以看出,是數據庫連接失敗,很常見的問題,但是從本地是可以直連mysql的。

因為sqoop導數據的時候,默認會啟動4個map task,這4個map task會隨機啟動在不動的datanode上,所以在想,是不是因為其他節點沒有權限訪問mysql導致。
但是需要先搞清楚,sqoop在抽取數據的時候,是不是會把4個map task隨機啟動在不動的datanode上

在官網上有如下內容:

雖然講的不是我們要找到,但是可以判斷出,sqoop導數據就是會把maptask隨機啟動在不通的datanode上。
因此,sqoop在導數據到mysql的時候,要確認,hadoop集群的每個節點都要有mysql的讀權限


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM