使用可写外部表卸载数据
Posted
技术标签:
【中文标题】使用可写外部表卸载数据【英文标题】:Unloading Data using Writable External Table 【发布时间】:2014-07-08 09:26:34 【问题描述】:我正在尝试在 Greenplum (postgresql) 中创建一个可写外部表,并使用它将数据从 Greenplum 表卸载到 HDFS。代码如下:
CREATE WRITABLE EXTERNAL TABLE test_writable
( LIKE awc_merged.delivery )
LOCATION ('gphdfs://10.63.33.201-1:8081/path')
FORMAT 'TEXT' (DELIMITER ',')
DISTRIBUTED RANDOMLY;
INSERT INTO test_writable SELECT * FROM awc_merged.delivery;
但是,我收到以下错误:
ERROR: could not write to external resource: Broken pipe (fileam.c:1386) (seg3 sdw2:40001 pid=21676) (cdbdisp.c:1457)
********** Error **********
ERROR: could not write to external resource: Broken pipe (fileam.c:1386) (seg3 sdw2:40001 pid=21676) (cdbdisp.c:1457)
SQL state: XX000
Greenplum 数据库和 HDFS 位于不同的服务器上,我知道该命令应该至少包含 HDFS 服务器的用户名和密码。谁能帮助我完成这项任务的正确命令?
问候,
琼斯
【问题讨论】:
【参考方案1】:首先,尝试设置可读的外部表。这是如何完成的指南:https://support.pivotal.io/hc/en-us/articles/202635496-How-to-access-HDFS-data-via-GPDB-external-table-with-gphdfs-protocol
此示例适用于 PHD 分发,但可以针对任何其他分发进行自定义。一般的想法是,在每个 GPDB 主机上,您应该安装 HDFS 客户端库并执行 HDFS 客户端配置(例如,您可以在 gpadmin usign "hdfs dfs -ls /" 下从这台机器访问 HDFS)
一般来说,设置过程在“GPDB 数据库管理员指南”中有描述,可以在这里找到:http://gpdb.docs.pivotal.io/4330/index.html#admin_guide/load.html
【讨论】:
以上是关于使用可写外部表卸载数据的主要内容,如果未能解决你的问题,请参考以下文章