sqoop讀取postgresql數(shù)據(jù)庫表格導(dǎo)入到hdfs中的實(shí)現(xiàn)
最近再學(xué)習(xí)spark streaming做實(shí)時(shí)計(jì)算這方面內(nèi)容,過程中需要從后臺(tái)數(shù)據(jù)庫導(dǎo)出數(shù)據(jù)到hdfs中,經(jīng)過調(diào)研發(fā)現(xiàn)需要使用sqoop進(jìn)行操作,本次操作環(huán)境是Linux下。
首先確保環(huán)境安裝了Hadoop和sqoop,安裝只需要下載 ,解壓 以及配置環(huán)境變量,這里不多說了,網(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ù)庫驅(qū)動(dòng)包放到$SQOOP_HOME/lib 下即可 。
三、導(dǎo)入pg數(shù)據(jù)庫中表到hdfs中
1、首先要啟動(dòng)Hadoop集群,不然會(huì)報(bào)錯(cuò)
執(zhí)行語句 $HADOOP_HOME/sbin/./start-all.sh
2、執(zhí)行sqoop語句進(jìn)行數(shù)據(jù)導(dǎo)入到hdfs
sqoop import \ --connect jdbc:postgresql:localhost:5432/test(數(shù)據(jù)庫的名稱) --username postgres (填自己的數(shù)據(jù)庫用戶名) --password 888888 (填自己數(shù)據(jù)庫的密碼) --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)致無運(yùn)行日志或無法導(dǎo)入數(shù)據(jù)到指定目錄且無法重新執(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有效地處理數(shù)據(jù)的加密和解密的常見方法
在信息化建設(shè)和等保建設(shè)中,都要求實(shí)現(xiàn)對(duì)用戶數(shù)據(jù)的隱私保護(hù),也就是我們常說的脫敏,那么在?PostgreSQL?數(shù)據(jù)庫中有沒有這樣的方法或者策略可以實(shí)現(xiàn)呢,本文小編將給大家介紹一下PostgreSQL有效地處理數(shù)據(jù)的加密和解密的常見方法,需要的朋友可以參考下2025-03-03
PostgreSQL中查看當(dāng)前時(shí)間和日期的幾種常用方法
在 PostgreSQL 中,有多個(gè)函數(shù)可以用來查看當(dāng)前時(shí)間和日期,這些函數(shù)在處理時(shí)間戳、日期和時(shí)間的計(jì)算時(shí)非常有用,以下是幾種常用的查看當(dāng)前時(shí)間和日期的函數(shù)及示例,需要的朋友可以參考下2024-10-10
PostgreSQL中Slony-I同步復(fù)制部署教程
這篇文章主要給大家介紹了關(guān)于PostgreSQL中Slony-I同步復(fù)制部署的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用PostgreSQL具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-06-06
PostgreSQL教程(十二):角色和權(quán)限管理介紹
這篇文章主要介紹了PostgreSQL教程(十二):角色和權(quán)限管理介紹,本文講解了數(shù)據(jù)庫角色、角色屬性、權(quán)限、角色成員,需要的朋友可以參考下2015-05-05
PostgreSQL的generate_series()函數(shù)的用法說明
這篇文章主要介紹了PostgreSQL的generate_series()函數(shù)的用法說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2021-01-01
PostgreSQL+GeoHash地圖點(diǎn)位聚合實(shí)現(xiàn)代碼
這篇文章主要介紹了PostgreSQL+GeoHash地圖點(diǎn)位聚合,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-07-07
postgreSQL使用pgAdmin備份服務(wù)器數(shù)據(jù)的方法
這篇文章主要介紹了postgreSQL使用pgAdmin備份服務(wù)器數(shù)據(jù)的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-02-02
PostgreSQL數(shù)據(jù)庫中DISTINCT關(guān)鍵字的四種用法詳解
PostgreSQL 不但高度兼容 SQL 標(biāo)準(zhǔn),同時(shí)還對(duì)很多語法進(jìn)行了擴(kuò)展,可以用于實(shí)現(xiàn)一些特殊的功能,今天我們就來介紹一下 PostgreSQL 數(shù)據(jù)庫中 DISTINCT 關(guān)鍵字的 4 種不同用法,需要的朋友可以參考下2024-04-04
PostgreSQL時(shí)間相差天數(shù)實(shí)例例子代碼解析
在PostgreSQL數(shù)據(jù)庫中計(jì)算兩個(gè)日期或時(shí)間戳之間的差異可以通過多種方法實(shí)現(xiàn),常用的有通過日期轉(zhuǎn)換、AGE函數(shù)、INTERVAL和+運(yùn)算符、DATE_PART函數(shù)以及利用CURRENT_DATE或NOW()函數(shù),大家可以根據(jù)自己的需求選擇合適的方式,需要的朋友可以參考下2024-11-11

