我如何在 GPDB 中创建和读取外部 table
How do i create and read External table in GPDB
我们有小型 gpdb 集群。当我尝试使用 gpfdist 协议创建和读取我的第一个外部 table 时。
读取外部时出错 table :
那就是
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 命令 table :
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';
如有任何帮助,我们将不胜感激!
您必须在 "gpmasterhost" 上创建 gpfdist 进程,监听端口 8080 并提供包含目录 demo 的文件,demo 目录包含 gp_RevenueReport_stg0.txt。
gpfdist -p 8080 -d path_to_demo &
正如 Jon 所说,您需要在 "gpmasterhost" 系统上 运行 gpfdist。
但是,根据您的说明,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/demo
因此您需要将 EXTERNAL 定义更改为(注意我没有使用演示目录):
创建外部 TABLE ext_table
(
"ID" 大整数,
"time" 没有时区的时间戳,
)
地点 (
'gpfdist://gpmasterhost:8080/gp_RevenueReport_stg0.txt'
)
FORMAT 'TEXT' (分隔符 ';' null '' 转义 '~' )
编码 'UTF8';
或 运行 gpfdist 向上一级 (/home/gpadmin),无需修改您的外部 table.
我们有小型 gpdb 集群。当我尝试使用 gpfdist 协议创建和读取我的第一个外部 table 时。
读取外部时出错 table : 那就是
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 命令 table :
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';
如有任何帮助,我们将不胜感激!
您必须在 "gpmasterhost" 上创建 gpfdist 进程,监听端口 8080 并提供包含目录 demo 的文件,demo 目录包含 gp_RevenueReport_stg0.txt。
gpfdist -p 8080 -d path_to_demo &
正如 Jon 所说,您需要在 "gpmasterhost" 系统上 运行 gpfdist。
但是,根据您的说明,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/demo
因此您需要将 EXTERNAL 定义更改为(注意我没有使用演示目录):
创建外部 TABLE ext_table ( "ID" 大整数, "time" 没有时区的时间戳, ) 地点 ( 'gpfdist://gpmasterhost:8080/gp_RevenueReport_stg0.txt' ) FORMAT 'TEXT' (分隔符 ';' null '' 转义 '~' ) 编码 'UTF8';
或 运行 gpfdist 向上一级 (/home/gpadmin),无需修改您的外部 table.