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 - 外部表的主要内容,如果未能解决你的问题,请参考以下文章

如何使用greenplum外部表访问hadoop hdfs

GreenPlum数据的装载与卸载之外部表以及gpfdist工具的使用

Greenplum:获取通过外部表处理的文件名

将数据插入 Greenplum 物理表

将csv文件导入greenplum外部表时如何转义换行符?

使用存储在 s3 中的 parquet 文件在 Greenplum 中创建外部表