工作原理
gpfdist預設從檔案中讀取csv或者text格式的資料。但是在實際的載入任務中,如果以csv檔案作為中間載體,會引入額外的磁碟i/o開銷。在unix系統中,「everythig is a file」,因此可以通過管道的方式,將中間格式的csv或者text寫入預先建立好的管道中,gpfdist則從管道中讀取資料進行載入。整個過程不需要真實的檔案,從而避免磁碟i/o的開銷。很多已有的載入工具都是利用pipe的方式與gpfdist一起工作,比如informatica的pwx聯結器,以及gplink等工具。
管道是linux中用於程序間通訊的工具,在linux中一切皆檔案。故可通過管道來進行資料載入,其過程資料是不落盤的,可調高效能。
例項:環境gp6 pai db
πdb 無外部表。使用gp4 測試區集群完成
1、新建table
tst=# create table demo(a text,b text,c text)
2、建立管道,可以看到檔案型別是p 代表是乙個管道
mkfifo pipetst
[root@p1tst01 data]# ll|grep pipe
prw-r--r-- 1 root root 0 mar 11 08:23 pipetst
3、生成檔案
a|b|c
e|r|y
1|4|6
4、啟動gpfdist程序
shellpath=/安裝目錄
cd $
source greenplum_loaders_path.sh
sleep 5s
gpfdist -p 8000 -d /gpmaster/gpseg-1/pg_log & //一般預設是8000埠
5、建立外部表
create external table demo_pipe(like demo) location ('gpfdist:') format 'text' (delimiter '|');
6、將檔案重定向到管道中,觀察external table
中是否有資料。
cat demo1.txt > mypipe
---------------------------------
qmstst=# select * from demo_pipe;
c1 | c2 | c3
----+----+----
a | b | c
e | r | y
1 | 4 | 6
(3 rows)
注意事項:
嚴格遵循操作管道檔案的時序
確保管道不會被其他程序使用,否則會報錯
error: connection with gpfdist failed for gpfdist: effective url: error code = 104 (connection reset by peer)
對同乙個管道不支援併發訪問。 Linux如何載入U盤
linux如何載入u盤 一 初次使用redhat 8.6版本,在載入u盤的時候遇到以下情況 1.不知道虛擬機器上的linux作業系統有沒有識別到u盤 2.如何將u盤掛載到系統上 3.解決中文亂碼的問題 二 解決方法如下 1.先執行fdisk l命令,檢視當前系統裡的硬碟情況 2.將u盤插入,再執行f...
CentOS 載入 掛載 U盤
1,以root使用者登陸 先載入usb模組 modprobe usb storage 用fdisk l 看看u盤的裝置 假如u盤是sda1 2,確定在 目錄 mnt 下建立了 資料夾 usb,如果未建立可鍵入一下命令 mkdir mnt usb disk,成功後進行下一步。3,載入 u 盤,需鍵入以...
Linux如何載入與解除安裝U盤
第一 以root使用者登陸 先載入usb模組 modprobe usb storage 用fdisk l 看看u盤的裝置 假如u盤是sda1 第二 確定在 目錄 mnt 下建立了 資料夾 usb,如果未建立可鍵入一下命令 md mnt usb 成功後進行下一步。第三,載入 u 盤,需鍵入以下命令 m...