Greenplum - 外部表
Posted
技术标签:
【中文标题】Greenplum - 外部表【英文标题】:Greenplum - external tables 【发布时间】:2013-12-09 21:03:53 【问题描述】:我有一组位于服务器位置的制表符分隔文件,并且我创建了一个元数据表和一个外部表,其布局与元数据表相同。
我想知道当我在 PgAdmin 3 中运行外部表脚本时,它是否应该使用服务器位置上的文件(制表符分隔的文件)中的数据加载外部表?
我想应该是这样,但是当我对 ext 表运行 SELECT 查询时,它会抛出一个错误:
(ERROR: http response code 404 from gpfdist)
如何解决这个问题?
【问题讨论】:
404码表示,文件不存在 【参考方案1】:如果没有在我的 Redhat Greenplum 服务器上运行 gpfdist 实例,我在尝试使用外部表时在日志中看到了这个错误: 错误:gpfdist://172.xxx.xxx.xxx:8081/app/xxx/prod/data/file.2015-01-21-08-37-50-0001.txt 与 gpfdist 的连接失败。有效网址:http://172.xxx.xxx.xxx:8081/app/xxx/prod/data/file.2015-01-21-08-37-50-0001.txt。错误代码 = 111 (连接被拒绝) (seg2 slice1 hostnamexxxx:40002 pid=17585)
我启动 gpfdist 在端口 8080 和 8081 上在后台运行(不知道为什么同时使用这两个端口),但我得到了一个不同的错误: 错误:来自 gpfdist 的 http 响应代码 404 (gpfdist://172.xxx.xxx.xxx:8081/app/xxx/prod/data/file.2015-01-21-08-37-50-0001.txt):未找到 HTTP/1.0 404 文件( url.c:343) (seg0 slice1 hostnamexxx:40000 pid=62012) (cdbdisp.c:1525)
我发现我必须使用以下命令从 / 目录启动 gpfdist(即使尝试使用 -d /app/xxx/prod/data 也不起作用,也没有从该目录启动 gpfdist):
nohup /usr/local/greenplum/greenplum-db/bin/gpfdist -p 8081 -l /home/xxxmgr/8081.log &
nohup /usr/local/greenplum/greenplum-db/bin/gpfdist -p 8080 -l /home/xxxmgr/8080.log &
现在它工作正常。祝你好运!
【讨论】:
【参考方案2】:您是否在外部表定义中指定了带有文本(输入)文件名的 Host:Port?
您是否在包含输入文本文件的同一文件夹中启动 gpfdist?
检查你的 gpfdist 是否在线。
发布您的外部表脚本/元数据表脚本。
【讨论】:
非常感谢!!!它现在正在工作..无论如何这里是创建外部表的脚本我正在使用 CREATE EXTERNAL TABLE staging.ext_file_layout (LIKE staging.file_layout) LOCATION ('gpfdist://T430-TMG198:8080//*.txt') FORMAT 'text' (分隔符'' null 'NULL') ENCODING 'LATIN1';将外部表 staging.ext_file_layout 所有者更改为 dev_staging_develop;以上是关于Greenplum - 外部表的主要内容,如果未能解决你的问题,请参考以下文章