gpfdist不落盤資料載入

2021-10-03 15:48:53 字數 1590 閱讀 4960

工作原理

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...