解決sqoop從postgresql拉數(shù)據(jù),報錯TCP/IP連接的問題
問題:
sqoop從postgresql拉數(shù)據(jù),在執(zhí)行到mapreduce時報錯Connection refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections
問題定位過程:
1、postgresql 5432端口已開放,執(zhí)行任務的節(jié)點能telnet通,并且netcat測試通過
2、sqoop list-tables命令可正常執(zhí)行,sqoop import報錯Connection refused. Check that the hostname and port are correct and that the
3、從其它服務器集群跑同樣腳本正常
解決:
集群中有node不能訪問5432,sqoop import命令一定要集群中所有起nodemanager服務的節(jié)點有訪問數(shù)據(jù)庫端口的權限,所以保證所有節(jié)點訪問5432后解決
備注:
sqoop list-tables能執(zhí)行就說明肯定不是postgresql端的問題,sqoop list-tables執(zhí)行命令的這臺服務器能訪問5432即可
補充:使用Sqoop從PostgreSQL向Hive中遷移數(shù)據(jù)遇到的問題
postgreSQL的界面
跟mysql不同之處就是,多了一個 2 ,這也是導致數(shù)據(jù)遷移錯誤原因
1.數(shù)據(jù)庫名稱 2.schema 3.表名
PostgreSQL中的對象屬于三層模型,即database->schema->table。PostgreSQL中一般包含多個database,每個database包含多個schema,schema下包含多個表。因此使用sqoop抽取數(shù)據(jù)時有時需要指定表是屬于哪個schema。
解決方案:
在代碼最后指定--schema
-- --schema 上圖2的名稱
整個代碼如下
./sqoop import --connect jdbc:postgresql://***.***.***.***:38888/bigdata --username test --password test123 --table tb_ecar_gps_zhengzhou_standard --fields-terminated-by '\t' -m 1 --target-dir '/sqoop/postgresql123' -- --schema benchmark_data;
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。
相關文章
PostgreSQL查看正在執(zhí)行的任務并強制結束的操作方法
這篇文章主要介紹了PostgreSQL查看正在執(zhí)行的任務并強制結束的操作方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-01-01Postgresql 數(shù)據(jù)庫權限功能的使用總結
這篇文章主要介紹了Postgresql 數(shù)據(jù)庫權限功能的使用總結,具有很好的參考價值,對大家有所幫助。一起跟隨小編過來看看吧2021-02-02PostgreSQL數(shù)據(jù)庫性能調優(yōu)的注意點以及pg數(shù)據(jù)庫性能優(yōu)化方式
這篇文章主要介紹了PostgreSQL數(shù)據(jù)庫性能調優(yōu)的注意點以及pg數(shù)據(jù)庫性能優(yōu)化方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-03-03