sqoop讀取postgresql數(shù)據(jù)庫(kù)表格導(dǎo)入到hdfs中的實(shí)現(xiàn)
最近再學(xué)習(xí)spark streaming做實(shí)時(shí)計(jì)算這方面內(nèi)容,過(guò)程中需要從后臺(tái)數(shù)據(jù)庫(kù)導(dǎo)出數(shù)據(jù)到hdfs中,經(jīng)過(guò)調(diào)研發(fā)現(xiàn)需要使用sqoop進(jìn)行操作,本次操作環(huán)境是Linux下。
首先確保環(huán)境安裝了Hadoop和sqoop,安裝只需要下載 ,解壓 以及配置環(huán)境變量,這里不多說(shuō)了,網(wǎng)上教程很多。
一、配置sqoop以及驗(yàn)證是否成功
切換到配置文件下:cd $SQOOP_HOME/conf
創(chuàng)建配置環(huán)境文件: cp sqoop-env-template.sh sqoop-env.sh
修改配置文件:conf/vi sqoop-env.sh:修改內(nèi)容如下
配置完成后,執(zhí)行命令sqoop-version ,檢查是否成功,如圖顯示sqoop 1.4.7即成功。
二、添加postgresql驅(qū)動(dòng)jar包
因?yàn)檫@里使用sqoop讀取postgresql的數(shù)據(jù),所以需要將數(shù)據(jù)庫(kù)驅(qū)動(dòng)包放到$SQOOP_HOME/lib 下即可 。
三、導(dǎo)入pg數(shù)據(jù)庫(kù)中表到hdfs中
1、首先要啟動(dòng)Hadoop集群,不然會(huì)報(bào)錯(cuò)
執(zhí)行語(yǔ)句 $HADOOP_HOME/sbin/./start-all.sh
2、執(zhí)行sqoop語(yǔ)句進(jìn)行數(shù)據(jù)導(dǎo)入到hdfs
sqoop import \ --connect jdbc:postgresql:localhost:5432/test(數(shù)據(jù)庫(kù)的名稱) --username postgres (填自己的數(shù)據(jù)庫(kù)用戶名) --password 888888 (填自己數(shù)據(jù)庫(kù)的密碼) --table company (自己創(chuàng)建表的名稱) --m 1 (mapreduce的個(gè)數(shù))
執(zhí)行結(jié)果如圖:
3、檢查hdfs上是否成功存儲(chǔ)到表數(shù)據(jù)
$HADOOP_HOME/bin hdfs dfs -cat /sqoop/part-m-00000(數(shù)據(jù)目錄改成自己的)
結(jié)果如圖所示:
顯示使用sqoop 將 postgreql上的表格數(shù)據(jù)成功導(dǎo)入到hdfs中,這算今天也有點(diǎn)收獲了!
補(bǔ)充:利用Sqoop從PostgreSQL導(dǎo)入數(shù)據(jù)時(shí)遇到的坑
sqoop import \ --connect "jdbc:postgresql://10.101.70.169:5432/db_name" \ --username "postgres" \ --password "123456" \ --table "test_user"\ --target-dir "/user/hive/warehouse/test.db/test_user" \ --fields-terminated-by '\t' \ --lines-terminated-by '\n' \ --hive-drop-import-delims \ --incremental lastmodified \ --merge-key id \ --check-column update_time \ --last-value "2019-03-25" \ --m 1 \ -- --schema "schema_name" \ --null-string '\\N' \ --null-non-string '\\N'
1、-- --schema
一定要放在后面,否則可能導(dǎo)致無(wú)運(yùn)行日志或無(wú)法導(dǎo)入數(shù)據(jù)到指定目錄且無(wú)法重新執(zhí)行(報(bào)目錄已存在)
2、PostgreSQL
須設(shè)置SET standard_conforming_strings = on;
,否則--null-string和--null-non-string
不起作用;
3、--null-string
和--null-non-string
放在-- --schema
后面,否則執(zhí)行時(shí)報(bào)Can't parse input data: '\N'
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。
相關(guān)文章
基于PostgreSQL pg_hba.conf 配置參數(shù)的使用說(shuō)明
這篇文章主要介紹了基于PostgreSQL pg_hba.conf 配置參數(shù)的使用說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-01-01詳解如何診斷和解決PostgreSQL中的死鎖問(wèn)題
在數(shù)據(jù)庫(kù)系統(tǒng)中,死鎖是一個(gè)常見(jiàn)但棘手的問(wèn)題,PostgreSQL 也不例外,如果不及時(shí)診斷和解決,死鎖可能會(huì)導(dǎo)致系統(tǒng)性能嚴(yán)重下降,甚至應(yīng)用程序的崩潰,本文將詳細(xì)探討如何診斷和解決 PostgreSQL 中的死鎖問(wèn)題,需要的朋友可以參考下2024-07-07淺談PostgreSQL消耗的內(nèi)存計(jì)算方法
這篇文章主要介紹了淺談PostgreSQL消耗的內(nèi)存計(jì)算方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-01-01postgresql使用filter進(jìn)行多維度聚合的解決方法
這篇文章給大家介紹postgresql使用filter進(jìn)行多維度聚合的解決方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2021-07-07詳解如何在Ubuntu?18.04上安裝和使用PostgreSQL
關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)是許多網(wǎng)站和應(yīng)用程序的關(guān)鍵組件,它們提供了一種結(jié)構(gòu)化的方式來(lái)存儲(chǔ)、組織和訪問(wèn)信息,本文演示了如何在?Ubuntu?18.04?VPS?實(shí)例上安裝?Postgres,并提供了基本數(shù)據(jù)庫(kù)管理的說(shuō)明,需要的朋友可以參考下2024-07-07windows PostgreSQL 9.1 安裝詳細(xì)步驟
這篇文章主要介紹了windows PostgreSQL 9.1 安裝詳細(xì)步驟,需要的朋友可以參考下2016-11-11