Как мне создать и прочитать Внешнюю таблицу в GPDB
У нас небольшой кластер gpdb. Когда я пытаюсь создать и прочитать мою первую Внешнюю таблицу, используя протокол gpfdist.
Получение ошибки при чтении внешней таблицы:
prod=# select * from ext_table
prod-# ;
ERROR: connection with gpfdist failed for gpfdist://gpmasterhost:8080/demo/gp_RevenueReport_stg0.txt. effective url: http://gpmasterhost:8080/demo/gp_RevenueReport_stg0.txt. error code = 111 (Connection refused) (seg0 slice1 datanode2 40000 pid=5402)
prod=#
Мы попробовали команду DDL для внешней таблицы:
CREATE EXTERNAL TABLE ext_table
(
"ID" bigint,
"time" timestamp without time zone,
)
LOCATION (
'gpfdist://gpmasterhost:8080/demo/gp_RevenueReport_stg0.txt'
)
FORMAT 'TEXT' (delimiter ';' null '' escape '~' )
ENCODING 'UTF8';
Любая помощь на это будет высоко ценится!
2 ответа
Вы должны создать процесс gpfdist на "gpmasterhost", прослушивая порт 8080 и обслуживая файлы, которые включают демонстрационную версию каталога, содержащую gp_RevenueReport_stg0.txt.
gpfdist -p 8080 -d path_to_demo &
Как сказал Джон, вам нужно запустить gpfdist в вашей системе "gpmasterhost".
Тем не менее, на основе ваших заметок gpfdist работает в вашей демо-директории:
ps aux | grep gpfdist root 9417 0,0 0,0 103244 868 pts/1 R+ 14:57 0:00 grep gpfdist gpadmin 32581 0,0 0,0 27148 1692 pts/0 S 14:49 0:00 gpfdist -p 8080 -d /home/gpadmin/ демонстрация
Так что вам нужно либо изменить определение EXTERNAL на (обратите внимание, я не использую демо-каталог):
CREATE EXTERNAL TABLE ext_table ("ID" bigint, отметка времени "time" без часового пояса,) LOCATION ( 'gpfdist://gpmasterhost:8080/gp_RevenueReport_stg0.txt') FORMAT 'TEXT' (delimiter ';' null '' escape '~') Кодировка'UTF8';
Или запустите gpfdist на один уровень вверх (/home/gpadmin) без изменений в вашей внешней таблице.