服務啟動
先試用root賬戶登錄
mkdir -p /data/gpfdist/data
mkdir -p /data/gpfdist/log
chown -R gpadmin:gpadmin /data/gpfdist
su - gpadmin
啟動服務
gpfdist -d /data/gpfdist/data -p 9091 -l /data/gpfdist/log/gpfdist_9091.log &
查看服務運行情況
?ps -ef|grep gpfdist
報錯
gpfdist: error while loading shared libraries: libevent-2.0.so.5: cannot open shared object file: No such file or directory
解決:
從編譯源拷貝這些so文件
cp -rd /usr/lib64/libevent* lib/?
cp -rd ?/usr/lib64/libapr* lib/
創建數據源
在源數據庫中先隨便弄一個test表,弄點數據。
創建測試數據表,作為數據源
CREATE TABLE "test"."test" ("test_id" int4 NOT NULL,"test_name" varchar(255),CONSTRAINT "test_pkey" PRIMARY KEY ("test_id")
)
;
INSERT INTO "test"."test"("test_id", "test_name") VALUES (1, '張三');
INSERT INTO "test"."test"("test_id", "test_name") VALUES (2, '李四');
INSERT INTO "test"."test"("test_id", "test_name") VALUES (3, '王五');
INSERT INTO "test"."test"("test_id", "test_name") VALUES (4, '測試用戶4');
INSERT INTO "test"."test"("test_id", "test_name") VALUES (5, '測試用戶5');
INSERT INTO "test"."test"("test_id", "test_name") VALUES (6, '測試用戶6');
INSERT INTO "test"."test"("test_id", "test_name") VALUES (7, '測試用戶7');
INSERT INTO "test"."test"("test_id", "test_name") VALUES (8, '測試用戶8');
INSERT INTO "test"."test"("test_id", "test_name") VALUES (9, '測試用戶9');
INSERT INTO "test"."test"("test_id", "test_name") VALUES (10, '測試用戶10');
INSERT INTO "test"."test"("test_id", "test_name") VALUES (11, '測試用戶11');
INSERT INTO "test"."test"("test_id", "test_name") VALUES (12, '測試用戶12');
INSERT INTO "test"."test"("test_id", "test_name") VALUES (13, '測試用戶13');
INSERT INTO "test"."test"("test_id", "test_name") VALUES (14, '測試用戶14');
INSERT INTO "test"."test"("test_id", "test_name") VALUES (15, '測試用戶15');
INSERT INTO "test"."test"("test_id", "test_name") VALUES (16, '測試用戶16');
INSERT INTO "test"."test"("test_id", "test_name") VALUES (17, '測試用戶17');
INSERT INTO "test"."test"("test_id", "test_name") VALUES (18, '測試用戶18');
INSERT INTO "test"."test"("test_id", "test_name") VALUES (19, '測試用戶19');
INSERT INTO "test"."test"("test_id", "test_name") VALUES (20, '測試用戶20');
創建外部表用于導出數據
注意:外部表需要指定gpfdist的ip和端口,還有詳細的目錄地址,其中文件名支持通配符。可以編寫多個gpfdist的地址,但是不能超過總的segment數
注意:單節點greenplum無法使用,因為segment數量為0。
源數據庫創建只寫的擴展表,僅用于寫入數據
create writable external table test1
(like test)
location ('gpfdist://192.168.81.154:9091/test.dat')
Format 'TEXT' (delimiter as E'|' null as '' escape 'OFF');
導入數據
insert into test1 select * from test;
導入數據后,打開 /data/gpfdist/data/test.dat 即可以看到剛才導入的數據。
刪除擴展表
drop external table test1
創建外部表用于導入數據
在目標數據庫中創建只讀的擴展表,掛載gpfdist服務地址,此地址對應上面的導出數據文件,當然,此文件也可以視網絡情況拷貝遷移,掛載到目標數據庫就近的gpfdist服務器上。
create READABLE external table test2
(like test)
location ('gpfdist://192.168.81.154:9091/test.dat')
Format 'TEXT' (delimiter as E'|' null as '' escape 'OFF');
查詢數據
驗證下外部表是否可用。
select * from ?test2
導入數據
將數據從外部表導入到目標表。
insert into target select * from test2
核對數據
核對下目標表的數據,已經都過來了。
select * from ? target?
刪除擴展表
drop external table test2
?
總結
以上是生活随笔為你收集整理的greenplum gpfdist应用的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。