Как мне создать и прочитать Внешнюю таблицу в 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) без изменений в вашей внешней таблице.

Другие вопросы по тегам